Я создаю панель администратора, и у меня есть 3 таблицы в моей базе данных: группы, роли, пользователи. У меня есть много разных отношений между таблицей пользователей и таблицей ролей. В этой документации нет документации laravel.Constraint Eager Загрузка с областями запросов
public function roles() {
return $this->belongsToMany('App\Models\Role', 'user_roles');
}
И у меня есть отношение друг к другу между таблицей групп и таблицей пользователей.
public function group() {
return $this->belongsTo('App\Models\Group');
}
В настоящее время я хочу применить фильтры к запросу посредством активной загрузки. И с ними я хочу добавить следующие динамические фильтры.
public function scopeStatus($query, $status = null) {
// If status is empty then return the query itself
if (is_null($status)) {
return $query;
}
return $query->where('status', $status);
}
public function scopeRole($query, $role = null) {
// If role is empty then return the query itself
if (is_null($role)) {
return $query;
}
return $query->where('role', $role);
}
public function scopeGroup($query, $group = null) {
// If group is empty then return the query itself
if (is_null($group)) {
return $query;
}
return $query->where('group_id', $group);
}
Так что я могу сделать некоторые запрос типа [статуса и group_id лишь столбцы в таблице пользователей]
$users = User::with([
'roles' => function ($query) use ($request) {
$query->role($request['role']);
},
'group' => function($query) use ($request) {
$query->group($request['group']);
}
])
->status($request['status'])
->paginate(20);
Но это не работает. Я делаю это через запрос AJAX, и я проверил параметры запроса. Это то, что я получаю, когда я делаю dd($request);
.
array:3 [▼
"group" => "1"
"role" => "1"
"status" => "1"
]
Все выглядит хорошо, но я всегда получаю и пустой объект. Пожалуйста, вся ваша помощь будет оценена по достоинству.
Не могли бы вы показать образец 'дд ($ запроса)' только перед запуском '$ пользователей = User :: ...'? –
Хорошо, я добавлю его как отредактировав на вопрос –
Начните с '$ users = User :: status ($ request ['status']) -> paginate (20);' - вы получаете ожидаемые результаты? –