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