Elocuent en Laravel

Elocuent en Laravel es un sistema ORM (Object Relational Mapping), lo que permite envolver las base de datos en objetos, por lo cual vamos a necesitar un modelo del objeto.

De este modo vamos convertir nuestra tabla mensajes en un modelo de la siguiente forma:

php artisan make:model Mensaje

Vemos que el nombre del modelo es el de la tabla en singular y mayúscula, (recordemos que nuestra tabla se llamaba mensajes), de este modo Elocuent entiende que es un modelo de la misma tabla en plural. Pero hay que tener cuidado con esto ya que lo entiende en inglés no en español y si el plural es distinto a añadir una s puede dar problemas, pero podemos solucionarlo como veremos más abajo.

El comando anterior nos debe de dar un resultado similar a:

Model created successfully.

De hecho si escribimos el comando php artisan make:model Mensaje -m también creará el archivo de migraciones, pero nosotros ya lo tenemos hecho en nuestro sistema y no es necesario.

Ahora si vamos a app aparece el modelo Mensaje.php con el siguiente contenido:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Mensaje extends Model
{
    //
}

Que como vemos es una clase que extiende de Model.

En este archivo podemos decirle a Laravel las relaciones que tiene que crear, como por ejemplo que cada Mensaje pertenece a un usuario añadiendo la siguiente línea dentro de la clase:

return $this->belongsTo('App\User');

Usando el modelo también se puede acceder a los datos de los mensajes añadiendo funciones, por ejemplo:

<?php namespace App; use Illuminate\Database\Eloquent\Model; 
class Mensaje extends Model { 
    return $this->belongsTo('App\User');

    public function getTitulo(){
    	return $this->titulo;
    }
    public function getContenido(){
    	return $this->contenido;
    }
}

Aquí hemos añadido dos funciones para obtener el titulo y el contenido del mensaje.

Como hemos visto antes puede darse el caso de que o bien el modelo y la tabla no coincidan en singular y plural añadiendo una s como por ejemplo camión y camiones, o que queremos llamar a nuestro modelo de forma diferente al singular de la tabla, o que incluso la tabla no tenga singular… podemos indicar a que tabla hace referencia el modelo añadiendo la siguiente sentencia:

protected $table='tabla_a_la_que_queremos_que_apunte';

La información completa sobre elocuent se puede encontrar en la página oficial de Laravel.

Con esto ya estamos listos para ir creando nuestro CRUD y atacar nuestra base de datos…