我很难说蛋糕是最简单的联想。
我有两个型号:
一位用户 一个角色。
如何分配蛋糕? (HasOne或BelongsTo?=>何时选择什么?)
什么型号放什么?我尝试了两种方法,最终导致了一个递归错误,或者它只是不起作用。
我的SQL表:
( tbl )core_users [id,username,password,role_id]
( tbl )core_roles [id,name]
我的模特:
class CoreUser extends AppModel {
public $hasOne = array(
'Role' => array(
'className' => 'CoreRole',
'foreignKey' => 'id'
)
);
}
class CoreRole extends AppModel {
public $belongsTo = array(
'User' => array(
'className' => 'CoreUser',
'foreignKey' => 'role_id'
)
);
}
=> 你能否给我一些正确的代码,我需要插入两个(或两个)模型中的一个来告诉蛋糕这个关系?
提前致谢
答案 0 :(得分:1)
理论上,你需要考虑两件事,其中一件是非Cakephp特定的。
:一种。关系:关系始终是双向的。在确定两个模型/对象/表之间的关系时,您总是会问两个问题:
- B的一个实例与A的一个实例有多少个<?li>
- A的一个实例与B的一个实例有多少个实例?
醇>
你说过,一个用户有一个角色。但是,One Role有多少用户与之相关?这将告诉您用户和角色之间的完整关系。 (为离题而道歉,但这很重要,我引用this book。)
<强> B中。 hasMany和belongsTo:之间的区别 这是基于遍历关系的方向确定的。 根据A点,说你已经确定: 一个用户有一个角色但是一个角色有很多用户。
现在当您在用户模型中尝试获取相关的角色数据时,您需要在用户模型中定义以下内容:
class CoreUser extends AppModel {
public $belongsTo = array(
'Role' => array(
'className' => 'CoreRole',
'foreignKey' => 'role_id'
)
);
}
但是当您处于Role的模型并尝试获取相关的用户数据时,您需要在Role模型中定义以下内容:
class CoreRole extends AppModel {
public $hasMany = array(
'User' => array(
'className' => 'CoreUser',
'foreignKey' => 'role_id'
)
);
}
有关完整讨论,请参阅this answer。