Guía completa de Eloquent ORM en Laravel: cómo interactuar con la base de datos de manera fácil y eficiente
Victor Arana Flores
11 Mar 2023
Eloquent es un ORM (Object-Relational Mapping) incluido en el framework de PHP llamado Laravel. ORM es una técnica que permite mapear objetos de una aplicación con tablas de una base de datos relacional. Esto significa que en lugar de escribir SQL directamente para interactuar con la base de datos, se puede utilizar un conjunto de funciones de Eloquent para manejar la comunicación entre la aplicación y la base de datos.
En este artículo, vamos a ver cómo utilizar Eloquent ORM en Laravel para interactuar con la base de datos. Esto incluye la creación de modelos, migraciones y cómo hacer consultas.
Si deseas profundizar aún más en tus habilidades con Eloquent ORM en Laravel, te recomendamos que consideres adquirir el curso "Laravel Eloquent: De cero a experto" de CodersFree. Este curso en línea es perfecto para aquellos que quieren aprender Eloquent desde cero y llegar a ser expertos en la materia.
Paso 1: Configuración de la base de datos en Laravel
Antes de comenzar a utilizar Eloquent, debemos asegurarnos de que Laravel esté configurado para conectarse a nuestra base de datos. Esto se realiza en el archivo .env ubicado en la raíz de nuestro proyecto.
En este archivo, encontraremos las siguientes líneas:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=nombre_base_de_datos
DB_USERNAME=nombre_usuario
DB_PASSWORD=contraseña
Aquí, debemos reemplazar "nombre_base_de_datos", "nombre_usuario" y "contraseña" con la información correspondiente a nuestra base de datos.
Paso 2: Creación de migraciones
Una vez que nuestra base de datos está configurada en Laravel, podemos crear migraciones para definir la estructura de nuestras tablas. Las migraciones son archivos PHP que se utilizan para crear, modificar o eliminar tablas en la base de datos.
Para crear una migración, podemos usar el comando php artisan make:migration nombre_de_la_migracion. Esto creará un nuevo archivo en la carpeta "database/migrations". En este archivo, podemos definir la estructura de la tabla utilizando el método up().
Por ejemplo, para crear una tabla de usuarios con los campos "nombre", "email" y "contraseña", podemos agregar lo siguiente al método up():
Schema::create('usuarios', function (Blueprint $table) {
$table->id();
$table->string('nombre');
$table->string('email')->unique();
$table->string('contraseña');
$table->timestamps();
});
Este código creará una nueva tabla llamada "usuarios" con los campos "id", "nombre", "email", "contraseña" y dos campos adicionales "created_at" y "updated_at" que serán manejados automáticamente por Laravel.
Para ejecutar la migración, utilizamos el comando php artisan migrate.
Paso 3: Creación de modelos
Una vez que tenemos nuestras tablas en la base de datos, podemos crear modelos en Laravel para interactuar con ellas. Los modelos son clases PHP que se utilizan para representar tablas de la base de datos. Cada modelo está asociado con una tabla específica en la base de datos y tiene propiedades y métodos que se pueden utilizar para interactuar con ella.
Para crear un modelo, podemos usar el comando php artisan make:model NombreDelModelo. Esto creará un nuevo archivo en la carpeta "app/Models" con el nombre "NombreDelModelo.php".
Por ejemplo, para crear un modelo para la tabla "usuarios", podemos usar el siguiente comando:
php artisan make:model Usuario
Esto creará un archivo "Usuario.php" en la carpeta "app/Models". Para definir las propiedades del modelo, podemos agregarlas como variables públicas en la clase del modelo. Por ejemplo, para el modelo "Usuario", podemos agregar las siguientes variables:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Usuario extends Model
{
use HasFactory;
protected $table = 'usuarios';
public $timestamps = true;
protected $fillable = ['nombre', 'email', 'contraseña'];
}
En este ejemplo, hemos definido las siguientes propiedades:
- $table: Esta propiedad especifica el nombre de la tabla en la base de datos que este modelo representa. En este caso, la tabla es "usuarios".
- $timestamps: Esta propiedad especifica si la tabla tiene campos de "created_at" y "updated_at". Al establecerlo en "true", Laravel agregará automáticamente estos campos a la tabla y los actualizará cada vez que se cree o modifique un registro en la tabla.
- $fillable: Esta propiedad define qué campos se pueden rellenar en un modelo utilizando el método create() o update(). En este ejemplo, los campos "nombre", "email" y "contraseña" son los únicos que se pueden rellenar a través de estos métodos.
Una vez que hemos definido nuestro modelo, podemos utilizar sus métodos para interactuar con la base de datos.
Paso 4: Consultas básicas con Eloquent
Para realizar consultas básicas en la base de datos utilizando Eloquent, podemos utilizar los métodos proporcionados por Laravel en el modelo correspondiente.
Por ejemplo, para recuperar todos los registros de la tabla "usuarios", podemos utilizar el método all():
$usuarios = Usuario::all();
Esto recuperará todos los registros de la tabla "usuarios" y los almacenará en la variable $usuarios.
Para recuperar un registro específico de la tabla utilizando su ID, podemos utilizar el método find():
$usuario = Usuario::find(1);
Esto recuperará el registro con el ID 1 de la tabla "usuarios" y lo almacenará en la variable $usuario.
También podemos recuperar registros que cumplan ciertas condiciones utilizando el método where(). Por ejemplo, para recuperar todos los registros de la tabla "usuarios" donde el campo "nombre" sea igual a "John", podemos hacer lo siguiente:
$usuarios = Usuario::where('nombre', 'John')->get();
Esto recuperará todos los registros de la tabla "usuarios" que tengan el valor "John" en el campo "nombre" y los almacenará en la variable $usuarios.
Además, podemos utilizar otros métodos como first(), count(), max(), min(), avg(), etc. para realizar operaciones en la base de datos utilizando Eloquent.
Paso 5: Creación, actualización y eliminación de registros con Eloquent
Para crear un nuevo registro en la base de datos utilizando Eloquent, podemos utilizar el método create(). Por ejemplo, para crear un nuevo registro en la tabla "usuarios" con los valores "John", "john@example.com" y "123456", podemos hacer lo siguiente:
$usuario = Usuario::create([
'nombre' => 'John',
'email' => 'john@example.com',
'contraseña' => '123456'
]);
Esto creará un nuevo registro en la tabla "usuarios" con los valores especificados y almacenará el modelo correspondiente en la variable $usuario.
Para actualizar un registro existente en la base de datos, podemos utilizar el método update(). Por ejemplo, para actualizar el registro con el ID 1 de la tabla "usuarios" y cambiar el valor del campo "nombre" a "Jane", podemos hacer lo siguiente:
$usuario = Usuario::find(1);
$usuario->update(['nombre' => 'Jane']);
Esto actualizará el registro correspondiente en la base de datos y actualizará el modelo correspondiente en la variable $usuario.
También podemos eliminar un registro de la base de datos utilizando el método delete(). Por ejemplo, para eliminar el registro con el ID 1 de la tabla "usuarios", podemos hacer lo siguiente:
$usuario = Usuario::find(1);
$usuario->delete();
Esto eliminará el registro correspondiente en la base de datos y eliminará el modelo correspondiente en la variable $usuario.
Paso 6: Relaciones entre tablas con Eloquent
Una de las características más potentes de Eloquent es su capacidad para manejar relaciones entre tablas de base de datos. Para definir relaciones entre tablas en Eloquent, podemos utilizar métodos como hasOne(), hasMany(), belongsTo(), belongsToMany(), etc.
Por ejemplo, si tenemos una tabla "usuarios" y una tabla "comentarios" y queremos definir una relación en la que un usuario puede tener muchos comentarios, podemos agregar el siguiente método a nuestro modelo "Usuario":
public function comentarios()
{
return $this->hasMany(Comentario::class);
}
Esto define una relación "hasMany" entre el modelo "Usuario" y el modelo "Comentario".
Luego, para recuperar todos los comentarios de un usuario específico, podemos utilizar la relación definida anteriormente:
$usuario = Usuario::find(1);
$comentarios = $usuario->comentarios;
Esto recuperará todos los comentarios del usuario con el ID 1 de la tabla "usuarios" y los almacenará en la variable $comentarios.
También podemos definir otras relaciones como "hasOne", "belongsTo" y "belongsToMany" utilizando métodos similares en nuestros modelos.
Conclusión
En resumen, Eloquent es una herramienta poderosa e intuitiva que nos permite interactuar con la base de datos de manera fácil y eficiente en Laravel. Al seguir los pasos descritos anteriormente, podemos empezar a utilizar Eloquent en nuestros proyectos de Laravel y aprovechar al máximo sus características y funcionalidades.