Posted in

Laravel Eloquent añadir condicional en la consulta

Si por ejemplo necesitamos filtrar por un campo en el caso de que tengamos el valor de ese campo, podemos usar el método when de la siguiente forma:

Laravel 5 o superior

$agenda = \App\Show::with(
                'colles',
                'city',
                'results.results.castellType'
            )
                ->whereYear('date', $current_year)
                ->whereMonth('date', $month_search)
                ->when($current_colla_id > 0, function ($query) use ($current_colla_id) {
                    $query->where('colla_id', $current_colla_id);
                })
                ->orderBy('date', 'desc')
                ->get();

En el ejemplo podemos observar que en el caso de que la variable current_colla_id sea mayor que 0, se añadirá a la consulta el filtro (where colla_id).

Laravel 4.2

$emails = Email::where(function($query) {
                    if(!Input::has('alldates'))
                        $query->whereBetween('created_at', [Input::get('from'), Input::get('to')]);

                    if(!Input::has('allorigins'))
                        $query->where('categoria', Input::get('categoria'));

                    if(Input::has('noexported'))
                        $query->where('exportat', 0);
                })
                    ->get();

Deixa un comentari

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *


The reCAPTCHA verification period has expired. Please reload the page.