我正在尝试在三个模型之间建立关系。我的模型是角色,职责和员工。从概念上讲,我相信我会将这种关系设置为:
员工表:
id:int Pk
fName:varChar
lName:varChar
角色表:
roldId:int pk
roleName:varChar
责任表:
reponsibilityId:PK int
责任名称:varChar
role_responsbility表:
role_responsibility_id:PK int
roleId:int FK
responsibilityId int FK
employee_role_responsibility表:
id:int PK
role_responsibility_id int FK
employee_id:int FK
所以,我的问题是,我如何在CakePHP模型中建模这些关系?这就是我到目前为止所做的:
App::uses('AppModel', 'Model');
class Employee extends AppModel {
public $name = "Employee";
}
App::uses('AppModel', 'Model');
class Role extends AppModel {
public $name = "Role";
public $hasAndBelongsToMany = array(
'MemberOf' => array(
'className' => 'Responsibility',
)
);
}
App::uses('AppModel', 'Model');
class Responsibility extends AppModel {
public $name = "Responsibility";
public $hasAndBelongsToMany = array(
'MemberOf' => array(
'className' => 'Role',
)
);
}
如何将roles_responsbility表与employee表一起加入?
由于
答案 0 :(得分:1)
我相信您正在寻找HasMany Through [see it in the CakePHP book],这基本上解释了您可以在连接表中添加其他字段,为该连接表创建模型,并根据需要关联它。
因此,在您的responsibilities_roles
表中,您需要添加employee_id
字段。
然后,您创建一个名为RepsponsibilitiesRole
的模型,并将其设置为belongsTo
Employee
。
你可以将它视为它自己的模型,因为它就是它 - 所以你可以在其中制作方法,或者通过它运行查找......等等。