
Hoy en el Blog de CLiCKO volvemos con nuevas funcionalidades de Laravel.
En Laravel podemos hacer uso de un ORM llamado Eloquent, un ORM es un Mapeo Objeto-Relacional, que es una técnica de programación para convertir datos entre un lenguaje de programación orientado a objetos y una base de datos relacional como motor de persistencia.
Eloquent nos proporciona una forma fácil y elegante para poder interactuar con nuestra base de datos. Cada tabla de nuestra base de datos tiene un “Modelo” correspondiente que se utiliza para interactuar con esa tabla. Los modelos nos permiten consultar datos en sus tablas, así como insertar nuevos registros en la tabla.
Definiendo modelos
Los modelos que creemos generalmente estarán en el directorio “app”, pero se pueden colocar en cualquier lugar en el que pueda cargarse mediante nuestro archivo composer.json.
Para generar un modelo nuevo se puede utilizar el comando:
También podemos crear el modelo y su archivo de migración si utilizamos el comando:
o
Los modelos de Laravel usan convenciones para facilitar el trabajo y ahorrar en líneas de código.
Nombres de tablas
El nombre en plural de la clase se utilizará como nombre de la tabla a menos que se especifique explícitamente otro nombre. Por ejemplo si creamos un modelo User Eloquent asumirá que el modelo almacena los registros en la tabla de users.
Sin embargo esto no funciona si utilizamos nombres en castellano ya que Laravel hace la conversión de las palabras al plural siguiendo el estandar ingles, en este caso definariamos el nombre de la tabla con la siguiente propiedad:
Timestamps
De forma predeterminada, Eloquent espera que las columnas created_at y updated_at estén en nuestras tablas, si quieres que Eloquent no gestione estas columnas usuariomos esta propiedad en nuestro modelo:
También podemos especificar el formato de la fecha utilizando esta propiedad:
Si quieres modificar los nombres de las columnas puedes definir estas constantes:
const UPDATED_AT = 'fecha_actualizacion';
Conexión de base de datos
De forma predeterminada, todos los modelos de Eloquent utilizarán la conexión de la base de datos predeterminada configurada en nuestra aplicación. Si queremos especificar una conexión diferente para el modelo, usamos la propiedad $connection: