Saltar al contenido

Laravel primero o nuevo ¿cómo comprobar si es el primero o nuevo?

Solución:

firstOrNew ()

Esta función devolverá el primer registro de la base de datos o creará una instancia de modelo nueva que aún no existe en la base de datos. Por lo tanto, si desea verificar si la instancia fue extraída de la base de datos o si es una nueva instancia, puede verificar la exists propiedad (no funciona) en el modelo.

if ($user->exists) {
    // user already exists and was pulled from database.
} else {
    // user created from 'new'; does not exist in database.
}

La pregunta original era sobre firstOrNew(), pero parece que mucha gente viene aquí por firstOrCreate(), así como. firstOrCreate() es diferente y requiere una verificación diferente.

firstOrCreate ()

Esta función devolverá el primer registro de la base de datos o creará un nuevo registro en la base de datos y lo devolverá. Dado que un registro recién creado existiría en la base de datos, no puede verificar la exists propiedad, porque será cierto en ambos casos. Sin embargo, puede comprobar el wasRecentlyCreated propiedad. Esta propiedad será verdadera si la instancia del modelo actual se acaba de crear en la base de datos, o falsa si ya estaba en la base de datos.

if ($user->wasRecentlyCreated) {
    // user just created in the database; it didn't exist before.
} else {
    // user already existed and was pulled from database.
}

Puede verificar si su usuario fue creado recientemente.

if ($user->wasRecentlyCreated) {
    // new user
} else {
    // user already exists
}

(Fuente: Thomas Kim de esta respuesta)

Si creó el modelo en el ciclo de vida actual, el atributo wasRecentlyCreated del modelo se establecerá en verdadero. De lo contrario, ese atributo se establecerá en falso.

En otras palabras, digamos que tiene un usuario con el correo electrónico, [email protected]

$user = User::firstOrCreate(['email' => '[email protected]']);
var_dump($user->wasRecentlyCreated);

// lo anterior se volcará falso porque esta entrada ya existía, de lo contrario, verdadero.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *