簡體   English   中英

我如何在 Laravel 8 中間件中使用一對多關系?

[英]How do i use one to many relationship within Laravel 8 Middleware?

我的數據庫中有一個UsersRoles表。 一個user可以有多個roles 我正在使用 Laravel 8,我希望能夠在中間件中返回該user所有roles (我正在使用慣性.js - handleinertiarequest.php )。

角色表:

ID 角色 用戶身份
1 超級管理員 3
2 行政 3
3 用戶 3

用戶表:

ID 名稱
1 一些名字
2 別的名字
3 喬·博格斯

用戶模型( User.php ):

public function userroles()
{
    return $this->hasMany(Roles::class);
}

角色模型( Roles.php ):

public function user()
{
    return $this->belongsTo(User::class);
}

HandleInertiaRequest.php :

public function share(Request $request)
{
    return array_merge(parent::share($request), [
        'auth' => function () use ($request) {
            return [
                'user' => $request->user() ? [
                    'id' => $request->user()->reference,
                    'first_name' => $request->user()->first_name,
                    'last_name' => $request->user()->last_name,
                    'role_staff' => \App\Models\Roles::select('id'),
                ] : null,
            ];
        },
    ]);
}

Layout.vue :

{{ $page.props.auth.user.role_staff }}

因此,如果我以Joe Bloggs ( id = 3 ) 身份登錄,我希望它返回3 roles (如果使用id ,甚至只有 1 個)。 但這不會返回任何內容或顯示任何錯誤。 我在這里缺少什么? 謝謝

在用戶模式中使用這種關系方法:

public function userRoles()
{
    $this->hasMany('App\Models\role_table_modal_name','user_id');
}

然后在控制器/中間件中調用您的用戶模式:

$ user_roles = User::find($id)->with('userRoles')->get();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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