繁体   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