【问题标题】:cakephp HABTM same modelcakephp HABTM 同款
【发布时间】:2012-10-07 21:53:54
【问题描述】:

我有一个用 cakephp 2.0 开发的网站 我想与同一个模型建立一个 HABTM 关系:一个产品可以有更多的产品。

我想在这个模式下做我的模型:

class Product extends AppModel {
    public $name = 'Product';
    public $useTable = 'products';
    public $belongsTo = 'User';
    public $actsAs = array('Containable');

        public $hasAndBelongsToMany = array(
        'Ingredient' => array(
            'className' => 'Product',
            'joinTable' => 'ingredients_products',
            'foreignKey' => 'product_id',
            'associationForeignKey' => 'ingredient_id', 
            'unique' => true
        )
    );

} 

我的关系正确吗?但是我必须在我的表 products 中插入字段 product_id 和 ingredients_id 吗? 我怎样才能用表格保存我的数据?我知道如何使用 HABTM 保存数据,但我从未对同一张表进行过 HABTM。

【问题讨论】:

  • 我猜你有一个产品,它的成分本身就是产品吗?
  • 是名称成分的示例,因为我不能插入两次“产品”,因为这会让我感到困惑

标签: php cakephp cakephp-2.0 has-and-belongs-to-many cakephp-model


【解决方案1】:

你们的关系很好。您编写的内容将创建一个产品模型,该模型可以包含任意数量的成分,并允许成分属于任意数量的产品。

保存时,您必须简单地将成分视为另一个模型。保存 HABTM 的 CakePHP 示例同样适用于将同一模型与 2 个不同模型相关联:http://book.cakephp.org/2.0/en/models/saving-your-data.html

因此,如果您将多个成分保存到产品中,您的数组结构将如下所示:

数组(
[0] => 数组(
产品 => 数组(
id => 1
),
成分 => 数组(
id => 18
)
),
1 => 数组(
产品 => 数组(
id => 1
),
成分 => 数组(
id => 23
)
)
// ...
)

这取决于您如何在表单中捕获它,但上面提供的链接中使用的表单示例应该正确地管理它。

【讨论】:

  • 好的,谢谢,我不确定我的模型是否可以在我的产品中添加更多成分。 (在实际成分中,产品是同表同型号的,但有些产品里面可以有更多产品,我希望这很清楚)
  • 您可以通过将“唯一”的值更改为false'keepExisting',使用HABTM 关系向产品中添加任意数量的成分。这将允许您在不删除现有关联的情况下使用更多成分更新关系表。有关“唯一”键的更多详细信息,请在此处查看此页面:book.cakephp.org/2.0/en/models/…
猜你喜欢
  • 1970-01-01
  • 2011-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多