CakePhp模型结构化

时间:2013-10-25 14:07:54

标签: cakephp cakephp-2.0 cakephp-2.1 cakephp-2.3

我正在尝试在三个模型之间建立关系。我的模型是角色,职责和员工。从概念上讲,我相信我会将这种关系设置为:

  

员工表:

     

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表一起加入?

由于

1 个答案:

答案 0 :(得分:1)

我相信您正在寻找HasMany Through [see it in the CakePHP book],这基本上解释了您可以在连接表中添加其他字段,为该连接表创建模型,并根据需要关联它。

因此,在您的responsibilities_roles表中,您需要添加employee_id字段。

然后,您创建一个名为RepsponsibilitiesRole的模型,并将其设置为belongsTo Employee

你可以将它视为它自己的模型,因为它就是它 - 所以你可以在其中制作方法,或者通过它运行查找......等等。