Как я могу отображать пользователей с указанной ролью c в моем show.blade. php и должен быть одобрен? - PullRequest
0 голосов
/ 02 марта 2020

Я пытаюсь отобразить пользователя с указанными c ролями в моей базе данных. У меня есть 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">

1 Ответ

0 голосов
/ 02 марта 2020

Звучит так, будто вы хотите, чтобы дополнительные данные о ваших пользователях были доступны для отображения, а также чтобы ограничить число пользователей, с которыми вы работаете. Лучшее место для применения этих правил - это когда вы запрашиваете базу данных. Я не могу знать точный синтаксис, не зная деталей вашей реализации, но что-то вроде этого:

 $users = User::all();

Одобрено администратором: Соответствует ли этот процесс одобрения столбцу bool в наборе пользовательских таблиц правда? Если нет, то, вероятно, следует. Затем вы можете изменить свой запрос на что-то вроде:

 $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 -существовании-существовании

Также есть хорошая информация в https://laravel.com/docs/master/eloquent#retrieving -моделях с может быть стоит пересмотреть.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...