Звучит так, будто вы хотите, чтобы дополнительные данные о ваших пользователях были доступны для отображения, а также чтобы ограничить число пользователей, с которыми вы работаете. Лучшее место для применения этих правил - это когда вы запрашиваете базу данных. Я не могу знать точный синтаксис, не зная деталей вашей реализации, но что-то вроде этого:
$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 -моделях с может быть стоит пересмотреть.
Надеюсь, это поможет!