Cómo usar procedimientos almacenados en Laravel con Eloquent

Veamos cómo reutilizar lógica de negocio desde stored procedures en nuestra aplicación Laravel.

Cómo usar procedimientos almacenados en Laravel con Eloquent
Photo by Stephen Phillips - Hostreviews.co.uk / Unsplash

Como ya sabemos, el motor ORM de Laravel es Eloquent. Sin embargo, cuando desarrollamos sobre aplicaciones o bases de datos ya creadas, muchas veces tenemos que hacer uso de estos procedimientos ya que tienen ya mucha lógica de negocio implementada que no queremos duplicar.

Qué son los procedimientos almacenados

Los procedimientos almacenados (stored procedures) son, a nivel general, funciones creadas en SQL. Estos procedimientos pueden devolver distintos datos (hacer un SELECT personalizado, con varios JOIN por ejemplo) o ejecutar otras acciones.

Cómo usar procedimientos almacenados en Laravel

Por suerte, Eloquent es bastante flexible y nos permite ejecutar estas stored procedures de forma sencilla. Para hacerlo, solamente hay que llamar a DB::select() con nuestra instrucción SQL, la ejecutará y nos devolverá los resultados. Por ejemplo, si tuviéramos un procedimiento almacenado para devolvernos el listado de productos vendidos este mes:

use DB;

public function index()
{
	$products = DB::select('call USP_LISTPRODUCTS');
    return response()->json([
    	'products' => $products,
    ]);
}