【发布时间】:2011-11-05 14:07:55
【问题描述】:
我有一个配方、物品和单位表/模型。我与配方和项目有 HABTM 关系,并且在添加/编辑配方时得到默认的多选框。 (我大部分时间都在使用烘焙)。问题是我需要将数量和单位与每个项目关联起来。
我希望的 UI 示例:
它的一个重要组成部分是添加/删除/编辑单个项目的能力。我想看看提交的表单数据,并使用一些 jquery 和克隆会起作用。但我想知道是否有人已经为此创建了一个行为?
当前模型(缩写为相关内容,即删除的用户/注释/等):
class Item extends AppModel {
var $name = 'Item';
// id : int
// name : varchar
// unit_id : int
var $belongsTo = array(
'Unit' => array(
'className' => 'Unit',
'foreignKey' => 'unit_id'
),
);
var $hasAndBelongsToMany = array(
'Recipe' => array(
'className' => 'Recipe',
'joinTable' => 'recipes_items',
'foreignKey' => 'item_id',
'associationForeignKey' => 'recipe_id',
)
);
}
.
class Recipe extends AppModel {
var $name = 'recipe';
var $displayField = "name";
// id : int
// name : varchar
var $hasAndBelongsToMany = array(
'Item' => array(
'className' => 'Item',
'joinTable' => 'recipes_items',
'foreignKey' => 'recipe_id',
'associationForeignKey' => 'item_id',
)
);
}
.
class RecipesItem extends AppModel {
var $name = 'RecipesItem';
// id : int
// quantity : int
// unit_id : int
// recipe_id : int
// item_id : int
var $belongsTo = array(
'Unit' => array(
'className' => 'Unit',
'foreignKey' => 'unit_id'
),
'Recipe' => array(
'className' => 'Recipe',
'foreignKey' => 'recipe_id'
),
'Item' => array(
'className' => 'Item',
'foreignKey' => 'item_id'
)
);
}
【问题讨论】:
-
据我所知,CakePHP 不允许您拥有关于 HABTM 关系的属性,因此您应该将前 2 个模型从 HABTM 更改为 hasMany 关系(将它们链接到 RecipesItem)。稍后,您可以为 RecipesItem 烘焙 MVC,您将完成所有工作。要完成您的要求,您可以将烘焙的添加视图“移动”到 Recipes add 方法,对 JS 进行必要的更改。
标签: list cakephp clone has-and-belongs-to-many cloneable