
Manejo de modelos inexistentes con el método existOr de Laravel
- Publicado el 11 febrero, 2025
- Palabras: 41
¿Necesitas manejar casos en los que un modelo no existe? El método existsOr de Laravel proporciona una forma elegante de ejecutar código cuando una consulta de modelo no devuelve resultados.

#Uso básico
Manejar modelos inexistentes con un clousure:
Model::where(...)
->existsOr(function () {
// Some logic if the model does not exist
});
#Ejemplo práctico
A continuación se explica cómo podría usarlo en un sistema de gestión de productos:
class ProductController extends Controller
{
public function checkAvailability($sku)
{
return Product::where('sku', $sku)
->existsOr(function () use ($sku) {
Log::info("Product lookup attempted for non-existent SKU: {$sku}");
return response()->json([
'available' => false,
'message' => 'Product not found in catalog'
], 404);
});
}
public function assignToCategory($productId, $categoryId)
{
return Product::where('id', $productId)
->existsOr(function () {
throw new ProductNotFoundException(
'Cannot assign category to non-existent product'
);
});
}
public function checkStock($productId)
{
return Product::where('id', $productId)
->where('status', 'active')
->existsOr(function () use ($productId) {
event(new ProductLookupFailed($productId));
return redirect()
->route('products.index')
->with('error', 'Product not available');
});
}
}
El método existeOr simplifica el manejo de casos en los que las consultas de su modelo no devuelven resultados.
Fuente: Harris Raftopoulos
Artículos relacionados
Inicia la conversación
Hazte miembro de Antonio Jenaro para comenzar a comentar.
Regístrate ahora¿Ya estás registrado? Inicia sesión