Las colecciones son objetos que nos permiten encapsular arrays dentro de una interfaz más elegante y fluida y otorgándonos funcionalidad adicional. Ahora además de contar con colecciones por defecto en Fluent, Laravel 5.3 también trae mejoras en el método where para hacer comparaciones con distintos operadores, similar a lo que podemos hacer al construir una consulta SQL. En esta lección conocerás dichos cambios y además aprenderás algunos tips para hacer consultas más eficientes y óptimas, dependiendo de las características de tu aplicación.

Notas

Por Clemir Rondón.

Para trabajar con la consola de Laravel Tinker ejecuta:

php artisan tinker

Las dos formas de hacer comparaciones en PHP son:

  • Estricta usando el operador === para comparar tanto por tipo como por valor.
  • Flexible (loose) usando el operador == para comparar por valor.

En Laravel 5.3 el método where aplicado a una Colección puede recibir los siguientes parámetros:

where($key, $operator, $value = null).

Este es uno de los cambios en Laravel 5.3 pues en versiones anteriores el método recibe los parámetros: where($key, $value, $strict = true).  Con los cuáles solo se podía realizar comparaciones estrictas (acción por defecto) o flexibles (pasando como tercer argumento el valor false) pero ahora también se pueden usar otros operadores como en Eloquent y Fluent, para hacer las comparaciones.

Lo más probable es que este cambio no afecte a tu aplicación, pero si has actualizado una aplicación a Laravel 5.3 y tu app usa where en las colecciones, asegúrate de que sigues obteniendo los mismos resultados de antes.

Los operadores soportados por el método where en Laravel 5.3 son: = == === <= >= < > <> != !== Para mayor información puedes consultar el método operatorForWhere de la clase Illuminate\Support\Collection

En caso de usar el método where con dos parámetros la comparación será flexible. Si quieres que sea estricta puedes indicar explicítamente el operador o bien usar directamente el método whereStrict es decir,

$items->where('number', '===', 2);

es equivalente a

$items->whereStrict('number', 2);

Puedes usar el método listen para ver los eventos de las consultas que ejecuta Laravel:

DB::listen(function ($query)
{
	Log::info($query->sql);
});

Al escribir Log::info estamos indicando que guarde en el archivo laravel.log ubicado en el directorio storage.

También para ver las consultas SQL realizadas puedes usar la barra de depuración Laravel Debubar .

Material relacionado

Únete a nuestra comunidad en Discord y comparte con los usuarios y autores de Styde, 100% gratis.

Únete hoy

Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.

Lección anterior Colecciones con Fluent, el constructor de consultas SQL de Laravel Lección siguiente Facades vs helpers vs inyección de dependencias y helper de caché en Laravel 5.3