Eloquent ORM

Como sabemos Laravel posee un ORM llamado Eloquent, un ORM es una sigla que significa Object Relation Mapping, como su nombre lo indica que es una forma de mapear los datos que se encuentran en la base de datos almacenados en un lenguaje de script SQL a objetos de PHP y viceversa, esto surge con la idea de tener un código portable con el que no tengamos la necesidad de usar lenguaje SQL dentro de nuetras clases de PHP.

Modelos

Eloquent nos especifica el uso de modelos como representación en código de una entidad o tabla de la base de datos, ya que los modelos serán los encargados de la comunicación con la base de datos en en el envío y recepción de información, es por esto que Laravel trabaja con la metodología Code-First el cual como su nombre nos indica el desarrollo de una aplicación debe ser comenzada por el diseño en código los modelos y migraciones, para luego pasar a la generación de la base de datos, esto para tener un control de las versiones de nuestra base de datos.

Laravel nos establece el uso de ciertas convenciones para la definición de modelos, lo que nos ayudara a disminuir el tiempo de establecer relaciones entre modelos y también en la generación de las migraciones, a continuación una de las convenciones mas importantes.

  • El nombre de los modelos se escribe en singular, en contraste con las tablas de la bd que se escriben en plural. Ya que al crear las migraciones laravel usa una notación UpperCamelCase para los nombres de los modelos los cuales si están definidos como singular les realizará una conversión a plural a demas de añadir underscore.

Modelo: EquipoJugador -> Tabla: equipos_jugadores

¿Como Crear un modelo?

Para proceder con la creación de un modelo utilizarémos la interfaz de linea de comando proporcionada por Laravel que es php artisan el cual no entrega un amplia gama de comandos para automatizar procesos durante el desarrollo de la aplicación, en particular se usara el comando make:model para generar nuestros modelos.

php artisan make:model Pelicula

En el comando anterior identificamos la función make:model el cual creará un archivo php con la estructura de una clase con el nombre determinado en este caso el nombre es "Pelicula". Las clase generadas, automaticamente extenderán de una clase padre definida por laravel llamada Model, esta clase posee todas las funciones disponibles para la realización de un CRUD sobre una tabla especifica de la base de datos. Nuestros modelos se guardarán en la carpeta /app, ya que se puede acceder de manera fácil y rápida, esto no quiere decir que no se puedan cambiar de lugar.

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Pelicula extends Model
{   

}

Si revisamos nuestro modelo generado tendremos algo como lo anterior, donde podemos distinguir su estructura ya mencionada. Este modelo generado es solamente la estructura básica, pero le falta definir algunos atributos vitales como:

  • Tabla: Es muy importante que el modelo tenga especificado el nombre de la tabla a la cual hace referencia, esto para evitar ambiguedades y inconsistencias dentro de los modelos.
  • Clave Primaria: Como sabemos toda tabla también tiene definida si clave primaria la cual sera irrepetible para cada registro.
  • Fechas de Acceso(Opcional): Los timestamps son dos valores predefinidos que laravel añade a nuestras tablas al momento de generarlas, los cuales son createAt y deleteAt lo cual nos servirán para conocer las fechas de modificación de algún registro, si no lo utilizaras tienes la opción de deshabilitarlos agregando un atributo$timestamps = False.
  • Atributos Editables: También es necesario especificar los atributos de las tablas que estarán disponibles para edición.

A continuación se presentrará la implementación de lo comentado anteriormente.

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Pelicula extends Model
{   
    // definicion de tabla a la cual pertenece
    protected $table = 'peliculas';
    // definicion de clave primaria
    protected $primaryKey = 'id_pelicula';
    // timestamps columnas createAt y deleteAt no implementadas
    public $timestamps = false;
    // // definicion de columnas editables de la tabla
    protected $fillable = [
        'nombre',
        'id_genero',
        'anno_estreno',
        'director',
        'sinopsis'
    ];

}

Con esto ya tendríamos definido nuestro Modelo, para su utilización.

Siempre podemos estar revisando la documentación de Laravel para obtener ayuda.

https://laravel.com/docs/5.3/eloquent

Uso de Eloquent ORM

Usaremos como ejemplo el modelo user, para hacer las llamadas de la forma que mostraremos a continuación se debe definir el modelo como uso ( use App\Pelicula; ).

Obtener todos los registros de un Modelo:
$pelicula= Pelicula::all();
Obtener un registro por el id:
$pelicula= Pelicula::find($id);
Obtener registros con condiciones:
//Una condición
$pelicula=Pelicula::where( 'id_genero', '=' ,1 )->get();
//Varias condiciones
$pelicula=Pelicula::where( 'id_genero', '=' ,1 )->where('director', '=' , 'Peter Jackson')->get();

Crear Nuevos Registros

Para crear un nuevo registro simplemente debe instanciar el modelo y utilizar el método create, es aquí donde entra en acción el atributo fillable del modelo, ya que usted deberá ingresar sólo las variables permitidas en la definición de este.

Crear cuando lo que se obtiene por request tiene los mismos nombres de los atributos del modelo:

Pelicula::create($request->all());

De esta forma se entregará todo lo obtenido en la consulta y se enviará para realizar la consulta a la base de datos.

Pelicula::create([
                'nombre' => 'El Señor de los Anillos',
                 'anno_estreno' => '13-02-2003',
                 'director' => 'Peter Jackson',
                 'sinopsis' => 'El retorno del Rey',
                 'id_genero' => 2
                 ]);

En este otro ejemplo podemos ver que estamos enviando a la función create ciertos valores y no todos.

Actualizar Registro

El método para actualizar es un poco menos simple que el anterior, pero esto no quiere decir de que sea difícil y complicado. Solo tendrá que buscar el registro que desea modificar, entregar los parámetros que se sobreescribirán y por último guardar los cambios realizados.

//Paso 1: Buscamos el registro
$pelicula= Pelicula::find(3);

//Paso 2: Rellenamos los atributos deseados
$pelicula->fill($request->all()); 

//Paso 3: Guardar cambios
$pelicula->save();

Eliminar Registro

Para eliminar un registro simplemente buscaremos el registro y llamaremos al método delete.

//Buscamos al usuario entregando su id
$pelicula= Pelicula::find($id); 
//Eliminamos el registro buscado
$pelicula->delete();

results matching ""

    No results matching ""