CakePHP 3.x - >属于许多表格

时间:2018-05-16 11:41:59

标签: mysql cakephp cakephp-3.0

我有一个设置,其中关系是三个因素:

构件 组 作用

因此,成员可能是多个组的一部分(并且组包含多个成员),但根据该组合,角色也会有所不同。

工作中的数据库人告诉我要设置这样的表:

member
id name

group
id name

role
id name

member_group_role
id member_id group_id role_id

如何让它与cakephp一起使用?我已成功为两个链接表设置HABTM,但不是三个。

谢谢!

1 个答案:

答案 0 :(得分:0)

根据您的结构我认为每张桌子有4个模型。 前3个模型将与第4个模型相关联hasMany,第4个模型将与这些模型相关联,如BelongsTo

1)会员

class MemberTable extends Table
{
    public function initialize(array $config)
    {
        $this->hasMany('MemberHasGroupHasRole')
            ->setForeignKey('member_id');
    }
}

2)小组

class GroupTable extends Table
{
    public function initialize(array $config)
    {
        $this->hasMany('MemberHasGroupHasRole')
            ->setForeignKey('group_id');
    }
}

3)角色

class RoleTable extends Table
{
    public function initialize(array $config)
    {
        $this->hasMany('MemberHasGroupHasRole')
            ->setForeignKey('role_id');
    }
}

4)MemberHasGroupHasRole

class MemberHasGroupHasRoleTable extends Table
{
    public function initialize(array $config)
    {
        $this->belongsTo('Member')
            ->setForeignKey('member_id')
            ->setJoinType('INNER');

        $this->belongsTo('Group')
            ->setForeignKey('group_id')
            ->setJoinType('INNER');

        $this->belongsTo('Role')
            ->setForeignKey('role_id')
            ->setJoinType('INNER');
    }
}