Para trabajar con bases de datos en Laravel no necesitamos escribir SQL de forma manual, ni siquiera utilizar el constructor de consultas. Laravel nos permite interactuar con la base de datos a un nivel mucho más alto a través del ORM Eloquent. Utilizando Eloquent podemos trabajar con modelos, que son clases que representan nuestras tablas en la base de datos y nos proveen de métodos con los que podemos interactuar en una interfaz más «elocuente» y orientada a objetos.

Repositorio

Ver el código de esta lección en GitHub

Suscríbete a nuestro boletín

Te enviaremos publicaciones con consejos útiles y múltiples recursos para que sigas aprendiendo.

Notas

Generar un modelo

Los modelos los podemos generar desde la consola utilizando el comando make:model de Artisan:

php artisan make:model Profession

La convención es nombrar al modelo con su primera letra en mayúsculas y escribirlo en singular (por ejemplo: «Profession» en vez de «professions»). Si queremos agregar dos palabras en el nombre, la convención es colocar la primera letra de cada palabra en mayúscula:

php artisan make:model ProfessionCategory

Este formato es conocido como «Studly Caps».

Por defecto modelos serán generados en el directorio app de nuestra aplicación, con su nombre más la extensión .php. En nuestra caso Profession.php o ProfessionCategory.php. También podemos generar el modelo dentro de otro directorio, especificando el nombre del directorio antes del modelo:

php artisan make:model Models/Profession

En este caso el modelo Profession.php se encontrará en app/Models/. De no existir el directorio especificado, Laravel lo va a crear por nosotros.

Especificar la tabla relacionada al modelo manualmente

Al utilizar un modelo no es obligatorio especificar el nombre de la tabla si seguimos las convenciones de Eloquent. Por ejemplo si utilizamos como nombre de modelo Profession Laravel hará las consultas a la tabla professions. Si utilizamos User Laravel hará las consultas a la tabla users. Por último si nuestro modelo fuese ProfessionCategory la tabla por defecto sería profession_categories.

En caso de que el nombre de la tabla no sea igual al nombre del modelo, debemos especificarlo en el modelo definiendo la propiedad $table:

class Profession extends Model
{
    protected $table = 'my_professions';
}

Insertar datos utilizando un modelo

Podemos insertar datos llamando al método create del modelo:

\App\Profession::create([
    'title' => 'Desarrollador back-end',
]);

Importando el modelo al principio del archivo, evitamos tener que hacer referencia a \App\Profession cada vez que trabajemos con el modelo:

use App\Profession;

Luego de importar el modelo, podemos hacerle referencia directamente:

Profession::create([
    'title' => 'Desarrollador back-end',
]);

Eliminar campos timestamps

Al insertar datos utilizando un modelo, Eloquent se encargará de cargar los valores de los campos created_at y updated_at de la tabla. Si no queremos utilizar estos campos, dentro de nuestro modelo debemos agregar la propiedad pública $timestamps y darle el valor de false:

public $timestamps = false;

Realizar consultas

Podemos utilizar los modelos para hacer consultas a la base de datos. Utilizando el método all() obtenemos todo el contenido de la tabla:

$professions = Profession::all();

También podemos encadenar métodos del constructor de consultas para obtener resultados más específicos:

$professionId = Profession::where('title', 'desarrollador back-end')->value('id');

Podemos retonar un resultado dependiendo de su id mediante el método find():

$profession = Profession::find(1);

En la siguiente lección seguiremos aprendiendo aún más sobre Eloquent ORM.

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 Constructor de consultas SQL de Laravel Lección siguiente Usando Eloquent ORM de forma interactiva con Tinker