我遇到CakePHP 2.x中的CakePHP belongsTo和hasAndBelongsToMany关系有问题
示例情况
表用户
id
organisation_id
表组织
id
name
表 user_organisation_permissions
id
user_id
organisation_id
的usermodel
hasAndBelongsToMany(Organisation);
belongsTo(Organisation)
用户属于一个组织,但它拥有多个组织的权限,从而导致以下冲突:
$aUser = $this->User->findById(1);
print_r($aUser);
// Output
# With the belongsTo relation
array(
'User' => array(
'id' => 1,
'organisation_id' => 1
'name' => 'Test User'
),
'Organisation' => array(
'id' => 1,
'name' => 'Test organisation'
)
);
# With the hasAndBelongsToMany relation
array(
'User' => array(
'id' => 1,
'organisation_id' => 1
'name' => 'Test User'
),
'Organisation' => array(
1 => array(
'id' => 1,
'name' => 'Test organisation'
),
2 => array(
'id' => 1,
'name' => 'Test organisation'
)
)
);
# When both relations are enabled it doesn't work
有没有人能解决这场冲突?
是否有"原生" CakePHP解决这个冲突的方法吗?
答案 0 :(得分:0)
答案实际上在CakePHP 2.x Cookbook中。
与同一型号的多重关系
在某些情况下,模型与另一个模型具有多个关系。例如,您可能有一个Message模型与User模型有两个关系:一个与发送消息的用户有关,另一个与接收消息的用户有关。消息表将包含字段user_id,但也包含字段recipient_id。现在,您的Message模型可能类似于:
class Message extends AppModel {
public $belongsTo = array(
'Sender' => array(
'className' => 'User',
'foreignKey' => 'user_id'
),
'Recipient' => array(
'className' => 'User',
'foreignKey' => 'recipient_id'
)
);
}