2

我有一个在 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。

4

1 回答 1

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
        )
    )
    // ...
    )

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

于 2012-10-08T14:27:05.257 回答