Qué es Eloquent en laravel ?

Author
Por Darío Rivera
Publicado el en Laravel

Eloquent es el ORM de laravel que implementa el patrón de arquitectura Active Record. Eso significa que cada tabla en la base de datos corresponde a una clase PHP (modelo) que interactúa con ella. Cada instancia de dicha clase corresponde a un registro en la tabla y genera persistencia en la base de datos, con lo cual una actualización de los atributos de la clase puede alterar el registro correspondiente en la base de datos.

Active Record

Para que quede un poco más clara la implementación del Active Record creemos la siguiente tabla mediante una migración.

php artisan make:migration create_empleados_table

Si aún no sabes qué es un migración te recomendamos leer nuestro post Migraciones de base de datos en laravel. Definamos pues la estructura de la tabla empleados en el modelo CreateEmpleadosTable.

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateEmpleadosTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('empleados', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('documento');
            $table->string('nombre');
            $table->string('apellidos');
            $table->integer('edad');
            $table->decimal('salario', 8, 2);
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('empleados');
    }
}

Ejecutemos la migración, creemos el modelo e ingresemos al tinker de laravel. Tinker, es una shell interactiva que viene incluída como dependencia en la instalación de laravel, en la cual podemos ejecutar comandos de PHP e interactuar de manera muy sencilla con las clases, modelos y demás elementos de nuestra aplicación.

php artisan migrate
php artisan make:model Empleado
php artisan tinker

Hagamos uso del nuevo modelo que acabamos de generar y creemos un registro en la base de datos. Nota que para cada comando ejecutado en la consola el tinker devuelve el valor de la expresión.

Psy Shell v0.9.9 (PHP 7.2.5 — cli) by Justin Hileman
>>> $empleado = new \App\Empleado;
=> App\Empleado {#2960}
>>> $empleado->id = 1;
=> 1
>>> $empleado->documento = '1110355987';
=> "1110355987"
>>> $empleado->nombre = 'John';
=> "John"
>>> $empleado->apellidos = 'Doe';
=> "Doe"
>>> $empleado->edad = 25;
=> 25
>>> $empleado->salario = 2300;
=> 2300
>>> $empleado->save();
=> 2300

El último método utilizado (save) realiza la persistencia en la base de datos guardando el registro. Para verificar que en efecto ha quedado guardado podemos utilizar el método find de eloquent de la siguiente manera:

>>> (new \App\Empleado)->find(1)
=> App\Empleado {#2965
     id: 1,
     documento: "1110355987",
     nombre: "John",
     apellidos: "Doe",
     edad: 25,
     salario: "2300.00",
     created_at: "2019-07-13 05:00:57",
     updated_at: "2019-07-13 05:00:57",
   }

Este método realizará la búsqueda del registro directamente en la base de datos por su llave primaria. Si eres eres tan curioso como yo y te has preguntada cómo le ha hecho laravel para realizar un bind de nuestro modelo y la tabla en la base de datos, esto sucede porque laravel utiliza por regla general nombres singulares para los modelos y asume nombres en plural para las tablas en la base de datos. Es decir, nuestro modelo Empleado se realaciona con la tabla Empleados. En el ejemplo anterior hemos creado el modelo por aparte, pero existe un comando en laravel que crea una migración y su modelo asociado todo en un solo paso. De esta manera nos ahorramos utilizar make:migration y tenemos el siguiente comando equivalente.

php artisan make:model Empleado --migration

O bien,

php artisan make:model Empleado -m

Si hubieras ejecutado este comando hubieras visto que crea el modelo con su nombre en singular y la migración con el nombre en plural. Así como esta, hay muchas otras convenciones que utiliza Eloquent para hacernos las cosas un poco más fáciles. Puedes ver las convenciones de Eloquent en el siguiente post.

Convenciones de Eloquent en Laravel

Ahora que ya sabes qué es Eloquent en laravel y has visto de manera somera cómo funciona, estás listo para realizar operaciones CRUD en la base de datos. En nuestro próximo post veremos cómo interactuar con la base de datos para realizar las operaciones básicas sobre ella. Hasta la próxima.


Acerca de Darío Rivera

Author

Application Architect at Elentra Corp . Quality developer and passionate learner with 10+ years of experience in web technologies. Creator of EasyHttp , an standard way to consume HTTP Clients.

LinkedIn Twitter Instagram

Sólo aquellos que han alcanzado el éxito saben que siempre estuvo a un paso del momento en que pensaron renunciar.