0

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

我有三个表:productsusersusers_products

一个产品可以有很多用户,一个用户可以有很多产品。users_products 表的结构是:id, user_id, product_id, renew_id.

当满足某些条件时,我想删除表中的所有数据users_products,但我不想触摸表上的任何东西。productsrenew_idusers

我正在考虑编写一个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 回答