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

Ú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 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