Eloquent: Consejos y trucos de Laravel 2

eloquent

Consejos y trucos de Laravel para una mayor productividad #2

El ORM Eloquent parece ser un método simple, pero hay muchas funciones semi-ocultas y formas menos conocidas de obtener más de ella. Te mostraré algunos consejos en este artículo.


1. Orden por relación

Un truco que es un poco más difícil de ejecutar. ¿Qué pasa si tiene una colección de temas del foro, pero quiere ordenarlos por el post más reciente? ¿No es un requisito típico en los foros tener los sujetos actualizados más recientemente en la parte superior?

Primero, describa una relación separada para la última publicación sobre el tema:

eloquent

Y luego, en nuestro controlador, podemos hacer esta “magia”:

eloquent


2. Eloquent::when() — no more if-else’s

Muchos de nosotros escribimos consultas condicionales con “if-else”, algo así:

eloquent

Pero hay una mejor manera: usar when():

eloquent

Puede que no se sienta más corto o más elegante, pero el más poderoso es pasar los parámetros:

eloquent


3. Pertenece a modelos predeterminados

Supongamos que tiene una publicación que pertenece al autor y luego el código Blade:

{{ $post->author->name }}

Pero, ¿qué sucede si el autor se elimina de la lista o si no se establece por algún motivo? Recibirá un mensaje de error que dice “propiedad de no objeto”.

Por supuesto, puedes prevenirlo así:

{{ $post->author->name ?? ''}}

Pero puedes hacerlo a nivel de relación Eloquent:

eloquent

En este ejemplo, si no hay ningún autor vinculado a la publicación, la colección author() devolverá un objeto App\Author vacío.

Además, podemos dar a ese modelo predeterminado valores de propiedad predeterminados.

eloquent


4. Ordenar por mutador

Imagina que tienes esto:

eloquent

Ahora, ¿quieres ordenar por ese full_name? Esto no funcionará:

eloquent

La solución es bastante simple. Necesitamos ordenar los resultados después de obtenerlos.

eloquent

Observe que el nombre de la función es diferente: no es orderBy, es sortBy.


5. En el ámbito global, hay un orden predeterminado.

¿Qué sucede si desea que User::all() siempre ordene por el campo de nombre? Es posible asignar un alcance global. Volvamos a la técnica boot () de la que hablamos antes.

Lea más sobre los ámbitos de consulta aquí.


6. Métodos de consulta sin procesar

Las declaraciones elocuentes pueden necesitar la adición de consultas en bruto. Sin embargo, hay funciones para ello.


7. Replicar una fila: producir una copia de una fila.

Uno corto. Sin explicaciones profundas, esta es la forma de alta calidad de hacer una réplica de la entrada de la base de datos:


8. Para tablas grandes, use el método chunk ().

No está del todo relacionado con Eloquent, se trata más de Collection, pero sigue siendo útil: puede dividir grandes conjuntos de datos en bits más pequeños para procesarlos.

En lugar de:

Lo que puede hacer es:


9. Crea cosas adicionales al crear un modelo.

Todos sabemos cómo hacer un modelo usando el comando artesanal:

php artisan make:model Company

Pero, ¿sabía que hay tres indicadores útiles para generar archivos relacionados con el modelo?

php artisan make:model Company -mcr
  • -m creará un archivo de migración
  • -c creará un controlador
  • -r indicará que el controlador debe ser ingenioso

10. Al guardar, anule updated_at.

¿Se dio cuenta de que el método ->save() puede tomar parámetros? Como resultado, podemos decirle que “ignore” la función actualizada por defecto, permitiendo que se utilice la marca de tiempo actual. Mire esto:

Estamos anulando la actualización predeterminada en con una personalizada aquí.


11. ¿Cuál es el resultado de una update()?

¿Alguna vez ha sentido curiosidad por saber qué devuelve realmente este código?

Quiero decir, la actualización se realiza en la base de datos, pero ¿qué habría en ese $ resultado?

La respuesta son las filas afectadas. Entonces, si necesita verificar cuántas filas se vieron afectadas, no necesita llamar a nada más; el método update() devolverá este número por usted


12. Transforma los corchetes en una consulta elocuente

Qué pasa si tiene y/o mezcla en su consulta SQL, así:

¿Cómo traducirlo a Eloquent? Esta es la forma incorrecta:

El pedido será incorrecto. La forma correcta es un poco más complicada, usando funciones de cierre como subconsultas:

13. o donde con varios parámetros

Finalmente, puede pasar una matriz de parámetros a orWhere().

Manera “usual”:

Puede hacerlo así:


¡Eso es! Pequeños consejos y trucos sobre el modelo eloquent de laravel, si le han gustado estos consejos, no olvide: 👍🏼

Recent Post