【问题标题】:Deleting Data for HABTM in cakephp在 cakephp 中删除 HABTM 的数据
【发布时间】:2012-07-30 10:08:56
【问题描述】:

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

我有三个表:productsusersusers_products 表。

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

renew_id满足特定条件时,我想删除users_productsproducts表中的所有数据,但我不想触摸users表上的任何内容。

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

我该怎么做?

【问题讨论】:

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


    【解决方案1】:

    对于 Has Many 和 HABTM 数据删除我们更喜欢这种方法

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

    只有在模型中定义了关系时,级联才会起作用。

    【讨论】:

      【解决方案2】:

      您可以像任何其他模型一样从联接中删除行。

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

      如果您使用的是 HABTM,则该关系可能不可用,因此您可以在模型中定义关系,例如 User hasMany UsersProduct 和 Product hasMany UsersProduct,这将允许从双方进行访问。

      你也可以使用ClassRegistry::init('UsersProduct')->deleteAll()

      附带说明,您的连接模型被错误地命名为它应该是 ProductsUser 根据约定,即连接表是连接模型的字母顺序。以下约定将为您提供一个名为 products_users

      的表

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-14
        • 2013-09-24
        • 1970-01-01
        相关资源
        最近更新 更多