Вы можете использовать when()
для построения динамических запросов на основе вашего пользовательского ввода.
$data = Product::query()
->when($request->get('service_id') ,function($query, $service_id) {
$query->where('service_id', $service_id);
})
->where(function($query) use ($search_value) {
$query->where(('name', 'like', "%$search_value%"))
->orWhere('description', 'like', "%$search_value%")
->orWhere('description_long', 'like', "%$search_value%");
})
->paginate($items_per_page);
Вложив условия полнотекстового поиска в другое предложение where()
, нам не нужно повторятьwhere('service_id', $service_id)
несколько раз.
Если вы используете опцию выбора All Services
в своем интерфейсе с value="all"
, вы также можете использовать следующее предложение when()
вместо приведенного выше:
->when($request->filled('service_id') && $request->get('service_id') !== 'all', function ($query) use ($request) {
$query->where('service_id', $request->get('service_id'));
})