Cómo aplicar muchos where a una consulta con Eloquent?

Publicado por Keygured
hace 4 años

En mi aplicación hecha con Laravel hago consultas a la base de datos usando Eloquent, Pero tengo muchos wheres y se ve un poco feo realmente, hay alguna forma de simplificar esto usando un solo where o quizá con alguna otra función?

User::where('campo_1', true)
->where('campo_2', true)
->where('campo_3', true)
->where('campo_4', false)
etc...
php laravel eloquent
Respuesta de Nick
hace 4 años

Hola

Muy buena pregunta, hay dos formas de poder simplificar tu codigo.

La primera es usar scopes. de esta forma:

User::activos()->conDatos()->etc();

Para eso hay que definir los scopes para cada consulta en el modelo asi:

public function scopeActivos($query)
{
    return $query->where('activo', true);
}

Con eso queda clara la idea

La segunda forma es con el uso de arrays y seria algo asi :

User::where(['campo_1' => true, 'campo_2' => false, ...]);

Espero te sirva, y puedas implementarlo.

Saludos.

Respuesta de Keygured
hace 4 años

Gracias, lo haré con los arrays.