我正在构建一个应用程序,其中包含用户和角色之间的多对多关系以及角色和权限之间的多对多关系。 我想获得具有hasManyThrough的用户的权限,但它不起作用。这种关系需要角色表中的user_id,但由于它们是多对多,所以当然没有。 谁有修复?
答案 0 :(得分:0)
无法实现多对多关系。
另一个帖子已经详细解答了这个问题: HasManyThrough with one-to-many relationship
您还可以参考:http://laravel-tricks.com/tricks/i-has-many-through-relation-laravel-the-missed-shortcut
答案 1 :(得分:0)
有一个Laravel 5.5 Composer软件包,可以执行多级关系(深层)
包装: 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