在cakephp中删除HABTM的数据

时间:2012-07-30 10:08:56

标签: database cakephp has-and-belongs-to-many

我是cakephp的新手。我试图根据HABTM关系进行删除,但失败了。请帮帮我。

我有三个表:productsusersusers_products表。

一个产品可以拥有多个用户,一个用户将拥有许多产品。 users_products表的结构为:iduser_idproduct_idrenew_id

我想在users_products满足特定条件时删除productsrenew_id表中的所有数据,但我不想触及users表上的任何内容。< / p>

我正在考虑编写一个while循环来删除记录,但害怕会导致很多查询而不使用cakephp功能。

我该怎么做?

2 个答案:

答案 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

的表