En este artículo voy a explicar cómo obtener el id del último elemento insertado en una tabla (en mi caso lo hice con una base de datos de MySQL pero debería funcionar en otros motores)  a través de Eloquent, usando el framework Laravel.

Obtener el último id insertado sirve cuando tenemos relaciones en nuestras bases de datos, y para crear la relación correcta necesitamos saber cuál es el id del elemento que acabamos de insertar.

Nota: ya hicimos esto con CodeIgniter.

Último ID de tabla con Eloquent y Laravel

Normalmente en Laravel definimos nuestros modelos de Eloquent y los guardamos usando el método save,

Laravel va a guardar nuestro modelo pero además de eso va a refrescarlo, poniéndole todos los datos recién guardados; por lo que si queremos acceder al id simplemente tenemos que acceder a la propiedad. Veamos:

<?php

namespace App\Http\Controllers;

use App\Area; # Nuestro modelo
class AreasController extends Controller
{
    public function agregar(GuardarArea $peticion)
    {
        $area = new Area; # Crear nuevo modelo
        # Ponerle los datos para guardar
        $area->nombre = $peticion->nombre; 
        # Guardar en BD
        $area->save();
        # ==================================
        # Aquí tenemos el id recién guardado :)
        # ==================================
        $idAreaRecienGuardada = $area->id;
        # Y podemos obtener cualquier propiedad, pues está refrescado
        # Aquí ya puedes hacer lo que quieras con el id
    }
}

En mi código, después de llamar a save accedo a la propiedad id del modelo, la cual será la que tiene la base de datos.

Esto supone que tu campo autoincrementable se llama id, si no se llama así, simplemente accede a otra propiedad y listo. Claro está que también puedes acceder a cualquier propiedad del modelo.

Con eso terminamos por hoy. Lee más sobre PHP, Laravel o la web.

Si el post ha sido de tu agrado te invito a que me sigas para saber cuando haya escrito un nuevo post, haya actualizado algún sistema o publicado un nuevo software. Facebook | X | Instagram | Telegram | También estoy a tus órdenes para cualquier contratación en mi página de contacto