Ultima Laravel
Share
Explore
Base de datos

icon picker
Eloquent ORM


image.png
Eloquent la capa de abstracción de la base de datos que utiliza Laravel.
Eloquent es un modelo objeto-Relacional ORM que se implementa en laravel.
De esta forma se va a establecer una clase (el modelo) nos va a permitir trabajar de forma sencilla y muy productiva con una base de datos.
El modelo (la clase) se va a relacionar con una tabla en la BD.

Relaciones entre tablas/modelos

El ORM Eloquent nos pone fácil para tratar las relaciones entre tablas.
Basta añadir algunos métodos a los modelos implicados.
Vamos a ver únicamente las relaciones 1:N
Para relaciones 1:1 y N:M ver la documentación
Vamos a verlo con el ejemplo entre usuarios y roles: un Role puede tener varios Users y un User pertenece a un Role.
Crear modelo Role (y migración, seeder y controlador)
-m añade la migración
-s añade el seeder
-cr añade el controlador (c) tipo resource (r)
Métodos de la migración
Modificación de la tabla users.
Es habitual tener que modificar tablas que ya existen. Para eso usamos migraciones un poco diferentes:
Creamos o modificamos el RoleSeeder y el UserSeeder:
No debemos olvidar actualizar el DatabaseSeeder:
Por fín los modelos: Vamos a tratar una relación 1:N
Un Role tiene muchos Users asociados.
La clase Role debe incluir el siguiente método:
Un User pertenece a un Role.
La clase Role debe incluir el siguiente método:
Ahora podemos usarla en nuestras vistas.
Por ejemplo en "user/index.blade.php"
O en "role/show.blade.php"

Eloquent con más de un atributo en una clave primaria

En Eloquent, la clave primaria se usa para identificar únicamente cada registro en una tabla. Por defecto, Eloquent asume que la clave primaria de una tabla es una columna llamada id. Sin embargo, en caso de que tu tabla tenga más de una clave primaria, puedes especificar qué columnas deben ser utilizadas como clave primaria en tu modelo.
Hay varias formas de especificar múltiples claves primarias en Eloquent.
Una forma es indicando en el Modelo Eloquent con la propiedad $primaryKey, se puede especificar una o varias columnas que deben ser utilizadas como clave primaria:
Otra forma es agregando en el modelo una propiedad $incrementing como false para desactivar el tratamiento de clave primaria como autoincrementable:
Es importante que tengas en cuenta que las claves primarias compuestas no soportan autoincremento, entonces debes proporcionar un valor para cada una de ellas al momento de guardar un nuevo registro en la tabla, a menos que tu tabla cuente con una función de generación de clave primaria.
Además, al utilizar claves primarias compuestas, debes asegurarte de que las columnas correspondientes también tengan las claves foráneas correctamente configuradas en las tablas relacionadas.
Aquí te dejo un ejemplo completo de cómo especificar múltiples claves primarias en un modelo Eloquent:
Ahora puedes
utilizar este modelo para interactuar con tu tabla en la base de datos. Por ejemplo, para guardar un nuevo registro:
O para
actualizar un registro existente:
Ten en cuenta que cuando se utiliza una clave compuesta, el método find() se utiliza pasando un array con las claves correspondientes.



Share
 
Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
CtrlP
) instead.