Laravel Eloquent Unhydrated

Publicado por Andrés López

Laravel Eloquent Unhydrated

He creado un pequeño paquete para Laravel 12.x en la organización de Red Plug para realizar consultas a bases de datos en poco tiempo.

Muchos desarrolladores a la hora de tratar con miles y millones de datos suelen optar por el Query Builder en vez de Eloquent.

Ya que Eloquent suele tardar bastante debido a los procesos de hidratación (Casting, scoping, eager loading).

Si tu no requieres de este proceso de hidratación y solo quieres obtener la información de base de datos pero sin dejar las ventajas de Eloquent, puedes omitir este proceso con red-plug/eloquent-unhydrated, aquí algunas comparaciones:

use App\Models\User;
use Illuminate\Support\Benchmark;

Benchmark::dd([
    'With hydration' => fn () => User::limit(5000)->get(), // 48.448 ms
    'Without hydration' => fn () => User::limit(5000)->getUnhydrated(), // 5.386 ms
]);

Instalación

Para instalar este paquete solo tienes que usar composer:

composer require red-plug/eloquent-unhydrated

Uso

Puedes acceder a nuevos métodos en todas tus consultas:

use App\Models\User;

$users = User::getUnhydrated();
 
foreach ($users as $user) {
    echo $user->name;
}

Incluso paginar:

use App\Models\User;

public function index(): View
{
    return view('user.index', [
        'users' => User::paginateUnhydrated(15)
    ]);
}
use App\Models\User;

public function index(): View
{
    return view('user.index', [
        'users' => User::simplePaginateUnhydrated(15)
    ]);
}
use App\Models\User;

$users = User::where('votes', '>', 100)->cursorPaginateUnhydrated(15);

Contribución

Las pull request son bienvenidas. Para cambios mayores, por favor abre primero un issue en Github para comenzar el diálogo acerca de lo que quieres cambiar.

Asegurate de pasar los tests antes de proponer nuevo código.

Licencia

MIT

Andrés López

Andrés López

Gran fan de Laravel, entusiasta de Vue y escritor de cualquier cosa que suene interesante