我如何在show.blade.php中显示具有特定角色的用户,并且必须获得批准?

问题描述 投票:-2回答:1

我正在尝试在数据库中显示具有特定角色的用户我有3个角色:供应商,客户和管理员。我想在show.blade.php中列出供应商,并且必须得到管理员的批准

这是我的控制器

  public function operators(){
        $users = User::all();
        return view('User::frontend.profile.show', compact('users'));
    }

和我的看法

<div class="list-item">
                                <div class="row">
                                    @foreach($users as $user)
                                    @if (count($users)>0)
                                     
                                    <div class="page-profile-content page-template-content">
                                        <div class="container">
                                            <div class="">
                                                <div class="row">
                                                    <div class="col-md-3">
php laravel view laravel-blade
1个回答
0
投票

听起来,您想让有关用户的其他数据可用于显示,并且还希望限制与您合作的用户。应用这些规则的最佳位置是在查询数据库时。在不了解实现细节的情况下,我无法知道确切的语法,但在以下方面,您会有所了解:

 $users = User::all();

由管理员批准:此批准过程是否等同于User表上的bool列设置为true?如果没有,它可能应该。然后,您可以将查询修改为以下内容:

 $users = User::where('is_approved', '=', 1)->get();

现在,您只加载要使用的用户,这有助于使查询尽可能快,并避免在显示数据时对数据进行任何其他逻辑检查。

对于角色,您可能需要查看数据库中的其他表?确保已在模型上定义了关系,然后还可以向查询中添加whereHas()子句。

  $users = User::where('is_approved', '=', 1)->whereHas('roles', function($query){ $query->where('name','=', 'vendor');})->get();

很难在一行上阅读,但可以使其更容易阅读。这是在更整洁的布局中的相同查询:

  $users = User::query()
     ->where('is_approved', '=', 1)
     ->whereHas('roles', function($query){ 
          $query->where('name','=', 'vendor');
     })
     ->get();

[roles应等于用户模型上关系的名称,name是角色表中名称所在的字段。

https://laravel.com/docs/master/eloquent-relationships#querying-relationship-existence中有更详细的解释

https://laravel.com/docs/master/eloquent#retrieving-models处还有一些很好的信息,可能值得回顾。

我希望这会有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.