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.

Manejo de modelos inexistentes con el método existOr de Laravel

#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.

Antonio Jenaro
Antonio Jenaro

Web Developer

Archivado en:

Fuente: Harris Raftopoulos

Artículos relacionados

Métodos firstOrNew, firstOrCreate, firstOr y updateOrCreate de Laravel
113

Métodos firstOrNew, firstOrCreate, firstOr y updateOrCreate de Laravel

Inicia la conversación

Hazte miembro de Antonio Jenaro para comenzar a comentar.

Regístrate ahora

¿Ya estás registrado? Inicia sesión