отношения 5.4 ко многим - PullRequest
0 голосов
/ 29 июня 2018

У меня есть отношение многие ко многим таблицам 'admins', 'pjt_roles' с pjt_role_admin. но не работает

У меня есть 2 модели

Роль класса

protected $table = 'pjt_roles';

public function Admin(){
    return $this->belongsToMany(Admin::class',pjt_role_admin');
}

класс Admin

public function Role(){
    return $this->belongsToMany(Role::class,'pjt_role_admin');
}

и таблица pjt_role_admin имеют атрибут

  1. admin_id из таблицы admins

  2. role_id из таблицы pjt_roles

enter image description here

1 Ответ

0 голосов
/ 29 июня 2018

Укажите вашу сводную таблицу в отношениях. Laravel по умолчанию принимает admin_role в качестве сводной таблицы, потому что у вас есть Admin и Role модели

Роль класса

protected $table = 'pjt_roles';

public function Admin(){ // should be admins() for better readability
    return $this->belongsToMany(Admin::class, 'pjt_role_admin');
}

Администратор класса

public function Role(){ // should be roles() for better readability
    return $this->belongsToMany(Role::class, 'pjt_role_admin');
}

Для определения имени таблицы Eloquent присоединится к двум связанным моделям имена в алфавитном порядке. Тем не менее, вы можете переопределить это условность. Вы можете сделать это, передав второй аргумент принадлежит метод ToMany.

Выборка данных

$admin = Admin::find(1);
$roles = $admin->Role; // should change to roles() in relationship for better readability

Сохранить

$admin->Role()->attach($roleId);

подробности https://laravel.com/docs/5.4/eloquent-relationships#many-to-many

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...