我是cakephp的新手。我试图根据HABTM关系进行删除,但失败了。请帮帮我。
我有三个表:products
,users
和users_products
表。
一个产品可以拥有多个用户,一个用户将拥有许多产品。 users_products表的结构为:id
,user_id
,product_id
,renew_id
。
我想在users_products
满足特定条件时删除products
和renew_id
表中的所有数据,但我不想触及users
表上的任何内容。< / p>
我正在考虑编写一个while循环来删除记录,但害怕会导致很多查询而不使用cakephp功能。
我该怎么做?
答案 0 :(得分:1)
对于Has Many和HABTM数据删除,我们更喜欢这种方法
//delete(int $id = null, boolean $cascade = true);
$this->Product->delete($id,true);
Cascade仅在Model中定义关系时才有效。
答案 1 :(得分:0)
您可以像其他任何模型一样从连接中删除行。
$this->UsersProduct->delete()
或$this->UsersProduct->deleteAll()
如果您使用的HABTM关系可能不可用,那么您可以在模型中定义关系,例如User hasMany UsersProduct和Product hasMany UsersProduct,这将允许双方进行访问。
您也可以使用ClassRegistry::init('UsersProduct')->deleteAll()
作为旁注,您的连接模型被错误地命名,因为它应该是基于约定的ProductsUser,即连接表是连接模型的字母顺序。以下约定将为您提供一个名为products_users