Los mejores trucos de Laravel (algunos ocultos) que te permitirán mejorar tus habilidades como programador
A partir de la versión 5.6.28, si quieres crear un controlador con solo una acción, puedes usar el método __invoke()
e incluso crear un controlador “invokable”.
Route::get(‘user/{id}’, ‘ShowProfile’);
php artisan make:controller ShowProfile --invokable
En Eloquent, puedes utilizar funciones de fecha con el método ‘where’ como whereDay()
, whereMonth()
, whereYear()
, whereDate()
y whereTime()
.
Algunos ejemplos:
Dentro del bucle foreach()
, es posible chequear si la entrada en el ciclo es la primera o la última solo utilizando la variable $loop->first
(para el primero) o $loop->last
(para el último).
Ejemplo:
Puedes especificar orderBy()
directamente en tus relaciones de Eloquent.
Ejemplo:
Para el uso de llaves foráneas en tu migración, en vez de utilizar integer()
, usa el tipounsignedInteger()
o integer()->unsigned()
, de otra forma obtendrás un error SQL.
Ejemplo:
Es posible chequear que el archivo de la vista exista antes de realizar la carga de él.
Ejemplo:
Incluso puedes cargar un arreglo ‘array’ de vistas y solo se cargará realmente la primera existente.
Ejemplo:
Si tu base de datos no contiene los campos created_at
y updated_at
, tu puedes especificar en tu modelo que no sea utilizada dicha opción por Eloquent a través de la propiedad $timestamps = false;
Ejemplo:
En una migración no solo es posible utilizar timestamps()
sino que también es factible incluir la variable de huso horario (o zona de tiempo ‘timezone’) a través de timestampsTz()
.
Ejemplo:
Puedes crear un grupo de rutas con un nombre de subdominio dinámico y pasarle valores a cada ruta.
Ejemplo:
Es posible utilizar la directiva @auth en Blade para comprobar si el usuario está autenticado en tu aplicación.
La forma típica de hacerlo es:
La vía más corta y eficiente es:
Cuando realices un llamado a un modelo de Eloquent como User::all()
es posible especificar qué columnas requieres que retorne.
Ejemplo:
Si deseas saber qué hay detrás de Auth::routes()
hay que observar el archivo /vendor/laravel/framework/src/illuminate/Routing/Router.php
(no lo modifiques!) si deseas alterar alguna ruta, debes copiara en tu archivo de rutas (ejemplo: routes/web.php
)
En la versión de Laravel 5.7 se agregan las rutas para la verificación del correo.
El archivo Router.php
posee la siguiente información:
Si utilizas comúnmente la opción dd($resultado)
tu puedes incluir la opción ->dd()
como un método directo al final de la sentencia de Eloquent, o incluso un cualquier colección.
Por ejemplo:
Después de haber realizado una consulta a través de Eloquent, es posible modificar el resultado de las filas a través de la función map()
en la colección.
Por ejemplo:
Es posible utilizar la función Log::info()
o la versión del mensaje reducida info()
con la adición de parámetros adicionales. Esto permite tener algún contexto respecto de lo que está pasando.
Ejemplo:
En la construcción de cualquier consulta a través de Eloquent, es posible especificar as
para que retorne el nombre que requieras de la columna, tal como se realiza en una consulta plana de SQL.
Ejemplo:
Adicionalmente al método findOrFail()
existe un método en Eloquent llamado firstOrFail()
que retorna el primer registro encontrado en la consulta o simplemente un error 404 de página no encontrada.
Ejemplo:
Si tu utilizas la relación hasMany()
, es posible también utilizar la opción saveMany()
para almacenar múltiples entradas ‘hijos’ para los objetos ‘padres’, todo en una sola sentencia.
Ejemplo:
Es posible personalizar el mensaje de error de validación por campo, regla y lenguaje. Solo necesitas crear el archivo en la ruta: resources/lang/xx/validation.php
con la estructura apropiada del arreglo.
La carpeta xx
especificada en la ruta, en el caso del lenguaje español es la siguiente:/es/
Ejemplo:
Si utilizas la función ‘Mailable’ para el envío de correos electrónicos es posible poder previsualizar el resultado del email sin necesidad de enviarlo, directamente en tu navegador, solo se requiere retornarla como resultado en una ruta.
Ejemplo:
Cuando requieras validar una imagen que se ha subido, es posible especificar las dimensiones que se requiere.
Ejemplo:
Cuando utilizas el borrado suave o ‘soft-deletes’, tu puedes restaurar múltiples filas en una sola y única sentencia.
Ejemplo:
Es posible utilizar la función de consulta de Eloquent has()
para el manejo de relaciones entre modelos, incluso con dos capas de profundidad.
Ejemplo:
Si tu quieres incrementar valores de alguna tabla en tu base de datos, solo puedes utilizar la función increment()
. Si tu quieres incrementar, no solo en 1, solo es necesario agregar el número a incrementar, como por ejemplo 50.
Ejemplo:
En las rutas es factible crear un grupo de éstas dentro de un grupo, incluso asignar un determinado middleware solo a algunas rutas en el grupo ‘padre’.
Ejemplo:
Es posible comprobar las opciones del comando ‘artisan’ ejecutando alguno de los comandos con la bandera --help
.
Por ejemplo escribe php artisan make:model --help
en tu terminal y podrás ver todas las opciones que dicho comando tiene.
Ejemplo:
Es posible utilizar make:observer
y completar con el método creating()
para configurar automáticamente el campo user_id
para el usuario que ha iniciado actualmente la sesión.
Ejemplo:
En las relaciones de Eloquent hasMany()
es posible filtrar los registros que tengan una cantidad determinada de registros hijos.
Ejemplo:
Cuando creas comandos de Artisan, yo puedes obtener información a través de preguntas de diversas vías: $this->confirm()
, $this->anticipate()
, $this->choice()
.
Ejemplo:
Después de obtener el resultado de una consulta con Eloquent, es posible modificar las filas utilizando la función map()
en la colección.
Ejemplo:
Si te gustó esta publicación, puedes compartirla en tus redes sociales ;)