[英]Eloquent hasManyThrough a belongsTo relationship?
我在 Laravel 中實現了一個簡單的用戶角色和權限 model,但我不確定我需要的 Eloquent 關系是否存在。 我想返回用戶權限的關系,但這是通過角色 model。 一個用戶通過role_id
只有一個角色,但一個角色有很多權限。
用戶belongsTo =>角色hasMany =>權限
我想要一個User->permissions()
的 Eloquent 關系方法,但hasManyThrough
不是正確的關系結構。
有任何想法嗎?
像這樣。
用戶
public function permissions()
{
return $this->role->permissions;
}
您可以使用HasManyThrough
關系:
class User extends Model
{
public function permissions()
{
return $this->hasManyThrough(
Permission::class, Role::class, 'id', null, 'role_id'
);
}
}
我假設你有 model 名稱為User.php
Role.php
Permission.php
然后關系定義如下
在User.php
public function role()
{
return $this->belongsTo(Role::class, 'role_id');
}
在Role.php
public function permissions()
{
return $this->hasMany(Permission::class, 'role_id');
}
現在使用這個關系
public function show($id)
{
$user = User::select('id', 'name', 'email', 'role_id')
->with([
'role.permissions'
])
->find($id);
$permissions = $user->role->permissions;
dd($permissions); //here is your permission list
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.