Saltar al contenido

¿Cómo crear múltiples consultas de cláusula where usando Laravel Eloquent?

Solución:

En Laravel 5.3 (y sigue siendo cierto a partir de 7.x) puede usar un whereres más granulares pasados ​​como una matriz:

$query->where([
    ['column_1', '=', 'value_1'],
    ['column_2', '<>', 'value_2'],
    [COLUMN, OPERATOR, VALUE],
    ...
])

Personalmente, no he encontrado casos de uso para esto en solo varios where llamadas, pero el hecho es que puedes usarlo.

Desde junio de 2014 puede pasar una matriz a where

Siempre que quieras todos los wheres usar and operador, puede agruparlos de esta manera:

$matchThese = ['field' => 'value', 'another_field' => 'another_value', ...];

// if you need another group of wheres as an alternative:
$orThose = ['yet_another_field' => 'yet_another_value', ...];

Luego:

$results = User::where($matchThese)->get();

// with another group
$results = User::where($matchThese)
    ->orWhere($orThose)
    ->get();

Lo anterior resultará en dicha consulta:

SELECT * FROM users
  WHERE (field = value AND another_field = another_value AND ...)
  OR (yet_another_field = yet_another_value AND ...)

Los ámbitos de consulta pueden ayudarlo a que su código sea más legible.

http://laravel.com/docs/eloquent#query-scopes

Actualizando esta respuesta con algún ejemplo:

En su modelo, cree métodos de ámbitos como este:

public function scopeActive($query)
{
    return $query->where('active', '=', 1);
}

public function scopeThat($query)
{
    return $query->where('that', '=', 1);
}

Luego, puede llamar a estos ámbitos mientras crea su consulta:

$users = User::active()->that()->get();

Puede usar subconsultas en una función anónima como esta:

 $results = User::where('this', '=', 1)
            ->where('that', '=', 1)
            ->where(function($query) {
                /** @var $query IlluminateDatabaseQueryBuilder  */
                return $query->where('this_too', 'LIKE', '%fake%')
                    ->orWhere('that_too', '=', 1);
            })
            ->get();
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *