簡體   English   中英

Eloquent hasManyThrough a belongsTo 關系?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM