Как черезе строку запрос сделать фильтрацию вывода?
У меня есть таблица пользователи и статуся, а также связывающая таблица.
Как через строку запроса например: api/user?status=free
выводилсиьс бы только пользователи с этим статусом.
Я ни как не могу сообразить как вывести запиьс через связывающую таблицу
user:
id name
1 ivan
2 ilya
3 nina
staus:
id title
1 free
2 busy
3 unavailable
user_Status:
user_id status_id
1 3
1 2
1 1
Контроллер
public function index(Request $request)
{
$status = $request->get('status');
$users = User::with('status')->get();
return $users;
}
Ответы (1 шт):
Автор решения: CoderYooda
→ Ссылка
Вообще странно что у Вас для статуса пользователя реализовано many to many отношение. Было бы более рационально использовать в модели User status_id, ну да ладно...
в модели User:
public function status()
{
return $this->belongsToMany(Status::class);
}
в контроллере:
public function index(Request $request)
{
$status = $request->get('status');
$users = User::query()
->when($status, function($q) use ($status){
$q->whereHas('status', function($q) use ($status) {
$q->where('title', $status)
})
})->get();
return $users;
}
P.S. код не проверял, если вдруг ошибочки - пишите, разберёмся.