El método firstOrCreate
de Eloquent nos permite encontrar el primer registro basado en ciertas condiciones y en caso de que no se encuentre, lo crea. En esta lección conocerás la mejora a este método realizada en Laravel 5.3 y por supuesto cómo aprovechar este método para reducir la cantidad de código y condicionales de nuestro proyecto.
Notas
Por Clemir Rondón.
En esta lección se creó un método estático en el modelo User para obtener el usuario admin. Si quieres conocer cómo funciona este tipo de método y cuando usarlo o no, puedes consultar la lección Propiedades y métodos estáticos del Curso de programación orientada a objetos con PHP.
Con el método firstOrFail()
ejecutas una consulta para obtener el primer resultado como en el método first()
pero además en caso de no encontrar ninguna coincidencia lanzará una excepción.
Recuerda que para poder usar el método create
que nos permite crear un nuevo registro de un modelo en la base de datos, tienes que haber agregado en su propiedad $fillable
todos los atributos que se permitirán asignarse de forma masiva.
En Laravel 5.3 el método firstOrCreate
acepta dos argumentos: un array asociativo $attributes
con las condiciones para encontrar el registro y otro array asociativo $values
con los otros atributos que agregaremos en caso de que el registro no exista y sea necesario crearlo.
El método firstOrCreate
se encuentra definido en la clase Illuminate/Database/Eloquent/Builder.php
Para eliminar las tablas de la base de datos y volver a crearlas puedes ejecutar:
php artisan migrate:refresh
Si deseas aprender más sobre las migraciones y otros comandos que puedes ejecutar, consulta la lección Creación de tablas con el sistema de migraciones de Laravel del Curso Primeros Pasos con Laravel 5.*
Material relacionado
- Tinker, la consola de comandos de Laravel
- Creación de tablas con el sistema de migraciones de Laravel
- Curso avanzado de Eloquent ORM
- Curso: Crea tu primera aplicación con Laravel 5
Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.
Lección anterior Facades vs helpers vs inyección de dependencias y helper de caché en Laravel 5.3 Lección siguiente Almacenamiento de archivos en Laravel 5.3 con el método store