0

私はcakephpの初心者です。HABTM 関係に基づいて削除しようとしましたが、失敗しました。私を助けてください。

productsusersおよびテーブルの3 つのテーブルがありusers_productsます。

1 つの製品に多くのユーザーがいて、1 人のユーザーが多くの製品を持つことができます。users_products テーブルの構造はid、、、、user_idです。product_idrenew_id

users_products特定の条件を満たしたときにproductsテーブル内のすべてのデータを削除したいのですrenew_idが、テーブルには何も触れたくありませんusers

while ループを書いてレコードを削除しようと思っているのですが、cakephp の機能を使わずにクエリが多くなってしまうのではないかと心配です。

これどうやってするの?

4

2 に答える 2

1

Has Many および HABTM データの削除については、この方法をお勧めします

//delete(int $id = null, boolean $cascade = true);
  $this->Product->delete($id,true);

カスケードは、関係がモデルで定義されている場合にのみ機能します。

于 2012-07-30T10:38:15.747 に答える
0

他のモデルと同様に、結合から行を削除できます。

$this->UsersProduct->delete()また$this->UsersProduct->deleteAll()

HABTM を使用している場合、そのリレーションは使用できない可能性があるため、User hasMany UsersProduct や Product hasMany UsersProduct などのモデルでリレーションを定義すると、両側からのアクセスが可能になります。

使用することもできますClassRegistry::init('UsersProduct')->deleteAll()

補足として、結合モデルは、規則に基づいて ProductsUser である必要があるため、誤った名前が付けられています。つまり、結合テーブルは結合モデルのアルファベット順です。規則に従うと、というテーブルが得られますproducts_users

于 2012-07-30T20:25:27.323 に答える