Laravel прошел через многие

Я создаю приложение со многими для многих между пользователями и ролями и многими для многих между ролями и разрешениями.
Я хотел бы получить разрешения пользователя с hasManyThrough, но это не работает. Это отношение ожидает user_id в таблице ролей, но поскольку их много ко многим, их, конечно, нет.
У кого есть починка?

2

Решение

преодолеть отношения «многие ко многим» невозможно.

На это ответили более подробно в другой теме:
HasManyThrough с отношением один ко многим

И вы также можете сослаться на: http://laravel-tricks.com/tricks/i-has-many-through-relation-laravel-the-missed-shortcut

0

Другие решения

Существует пакет композитора Laravel 5.5, который может выполнять многоуровневые отношения (глубокие)

Пакет:
https://github.com/staudenmeir/eloquent-has-many-deep

Пример:

User → принадлежит многим → Role → принадлежит многим → Permission

class User extends Model
{
use \Staudenmeir\EloquentHasManyDeep\HasRelationships;

public function permissions()
{
return $this->hasManyDeep(
'App\Permission',
['role_user', 'App\Role', 'permission_role'], // Pivot tables/models starting from the Parent, which is the User
);
}
}

Пример, если необходимо определить внешние ключи:

https://github.com/staudenmeir/eloquent-has-many-deep/issues/7#issuecomment-431477943

0

По вопросам рекламы [email protected]