Много-ко-многим Отношения 3 Модели Laravel [5.6] - PullRequest
0 голосов
/ 03 июля 2018

В моем приложении 3 модели Компания , Пользователь , Роль

Бизнес-правило выглядит так:

  • Пользователь является Роль в Компания
  • Элон является Генеральным директором в SpaceX
  • Синди является Менеджер в SpaceX
  • Элон является Генеральным директором в Тесла

Я думаю о создании 4-й модели, что-то вроде Сотрудники .

Но я понятия не имею, как создать миграцию и определить отношения между этими моделями.

1 Ответ

0 голосов
/ 03 июля 2018

Я бы тоже пошел на 4 таблицы как

  • Пользователи
  • роли
  • компания
  • user_role_company

Первые три таблицы сохранят обычные данные без удержания какого-либо внешнего ключа из других таблиц, 4 таблицы свяжут эти таблицы друг с другом со следующими атрибутами

  • user_id
  • role_id
  • company_id

Теперь ваши дополнительные таблицы, которые являются пользователями, ролями и компаниями, будут определять отношение с user_role_company как hasMany, а user_role_company будет определять обратную связь с этими 3 таблицами как belongsTo

class User extends Model{

    public function userRoleCompany()
    {
        return $this->hasMany('App\UserRoleCompany', 'user_id','id');
    }

}

class Role extends Model{

    public function userRoleCompany()
    {
        return $this->hasMany('App\UserRoleCompany', 'role_id','id');
    }

}

class Company extends Model{

    public function userRoleCompany()
    {
        return $this->hasMany('App\UserRoleCompany', 'company_id','id');
    }

}


class UserRoleCompany extends Model{

    public function user()
    {
        return $this->belongsTo('App\User', 'user_id');
    }

    public function role()
    {
        return $this->belongsTo('App\Role', 'role_id');
    }

    public function company()
    {
        return $this->belongsTo('App\Company', 'company_id');
    }

}
...