我在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
)
);
}
我的关系是否正确?但是我要在我的表产品中插入字段product_id和ingredient_id吗? 如何使用表单保存数据?我知道如何使用HABTM保存数据,但我从未对同一个表做过HABTM。
答案 0 :(得分:1)
你的关系很好。您所写的内容将创建一个产品模型,该产品模型可以包含任意数量的成分,并允许成分属于任意数量的产品。
保存时,您必须简单地将成分视为另一种型号。保存HABTM的CakePHP示例与将2个不同模型关联的同一模型一样有效:http://book.cakephp.org/2.0/en/models/saving-your-data.html。
因此,如果您将多个成分保存到产品中,则Array结构将如下所示:
阵列(
[0] =>阵列(
产品=>数组(
id => 1
),
成分=>数组(
id => 18个
)
),
1 =>阵列(
产品=>数组(
id => 1
),
成分=>数组(
id => 23个
)
)
// ... )
由您决定如何在表单中捕获它,但上面提供的链接中使用的表单示例应该正确管理。