Reputation: 8058
I want to filter my results agains multiple DB columns but the way I'm doing it right now doesn't seem Laravel-ish at all :)
Is there a better way? I don't want to pile up all those sql
statements at the end.
$data = Input::except('_token');
if (isset($data['passenger_name']))
{
$passenger_name = $data['passenger_name'];
} else {
$passenger_name = '*';
}
if (isset($data['passenger_lastname']))
{
$passenger_lastname = $data['passenger_lastname'];
} else {
$passenger_lastname = '*';
}
// Run query
$q = Reservation::where('passenger_firstname', 'LIKE', '%'. $passenger_name .'%')
->where('passenger_lastname', 'LIKE', '%' . $passenger_lastname .'%')
->get();
return View::make('dashboard')->with('reservations', $q);
These are just two of many criteria i have to run queries against
Upvotes: 0
Views: 4338
Reputation: 146201
You may try this:
$query = Reservation::query();
if(Input::has('passenger_name')) {
$query->where('passenger_name', Input::get('passenger_name'));
}
if(Input::has('passenger_lastname')) {
$query->where('passenger_lastname', Input::get('passenger_lastname'));
}
$reservations = $query->get();
return View::make('dashboard')->with('reservations', $reservations);
Upvotes: 1