Pasar al contenido principal
Jose Luján
Luis Avilés
Álvaro Felipe, Jon Mircha
Álvaro Felipe
Alberto Quiroga
Alexys Lozada, Álvaro Felipe, Daniel Romero, Jon Mircha
Daniel Romero
Alexys Lozada, Daniel Romero
Álvaro Felipe
Francisco Romero
Alexys Lozada
Álvaro Felipe
Jon Mircha
Álvaro Felipe
Daniel Romero
Daniel Romero
Jose Luján
Álvaro Felipe
Freddy Cahuas
Álvaro Felipe

Eloquent, diferencia entre find y get

developer
 
 
 
 
 
 

Eloquent es el ORM de Laravel, lo hemos visto en el Curso PHP Avanzado con Laravel.

En este artículo quiero contarte sobre un problema con el que me encontré cuando estaba dando mis primeros pasos con Eloquent.

Mi objetivo era servir estadísticas de recursos humanos del empleado que coincidiera con un id dado.

En mi mente la consulta que se requería se construyó así:

Busca el registro de la tabla usuario donde (where) el id sea el que recibo en la petición.

Deduje entonces que la instrucción para obtener la información general del empleado sería:


$empleado = Empleado::find(1);

Luego, si el empleado existiera, buscaría la información relacionada en la base de datos de recursos humanos:


if ($empleado->isEmpty()) {
    // Devuelve un mensaje indicando que no existe un usuario con el id recibido.
}

// Continúan las instrucciones porque el usuario sí existe.

Como prueba, intenté obtener la información con un id que no existía, esperando el mensaje que me dijera eso precisamente; pero en su lugar un error de PHP saltó a la vista:

No se puede usar el método isEmpty() sobre null.

Entonces lo entendí:

La función find() devuelve null cuando el usuario no existe.

Quise saber por qué mi mente me llevó a usar isEmpty() cuando sólo tenía que hacer esto:


if (!$empleado) {
    // Devuelve un mensaje indicando que no existe un usuario con el id recibido.
}

// Continúan las instrucciones porque el usuario sí existe.

Consulté la documentación de Laravel para saber cuándo podía usar isEmpty(), descubrí que la función sólo está disponible para una colección de datos, las colecciones de Laravel son arrays con superpoderes, disponen de una serie de funciones muy útiles, entre ellas isEmpty().

El método find($id) devuelve la instancia del modelo o null, no una colección.

Si quisiera obtener una colección para mi caso, aunque con un sólo elemento, podría usar:


$empleado = Empleado::where('id', 1)->get();

De esta forma, al ser una colección sí tendría disponible la función isEmpty().

En conclusión


// Retorna null si no encuentra el registro.
$empleado = Empleado::find(1);

// Retorna una colección vacía en caso de no encontrar un registro.
$empleado = Empleado::where('id', 1)->get();

Aprendemos más de los errores que cuando las cosas salen a la primera.

Si quieres aprender más de Laravel y su ORM Eloquent, te espero en las clases del Curso PHP Avanzado con Laravel de EDteam. ;)

Eso es todo por ahora gente del futuro, nos leemos en el siguiente artículo.

Go desde cero

Go es un lenguaje creado por Google en 2009 y que ha ganado mucha fuerza en el desarrollo actual. De hecho, empresas como Dropbox,...

Si este artículo te gustó suscríbete para recibir novedades del blog y promociones de EDteam

Ingresa tu correo electrónico para recibir nuestro boletín semanal