CakePHP 3.x -> принадлежит многим за три таблицы - PullRequest
0 голосов
/ 16 мая 2018

У меня есть установка, в которой отношение состоит из трех факторов:

роль группы участников

Таким образом, участник может быть частью нескольких групп (и группы содержат несколько членов), но в зависимости от этогокомбинация, роль также будет отличаться.

Работающий в базе данных человек сказал мне настроить таблицы следующим образом:

member
id name

group
id name

role
id name

member_group_role
id member_id group_id role_id

Как мне заставить это работать с cakephp?Я успешно настроил HABTM только для двух связанных таблиц, но не для трех.

Спасибо!

1 Ответ

0 голосов
/ 16 мая 2018

В соответствии с вашей структурой, я думаю, есть 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');
    }
} 
...