Ticom Perú

Laravel 12: Uso de where, orWhere, when y query con ejemplos prácticos

Una de las características más potentes de Laravel 12 es la facilidad para construir consultas dinámicas usando Eloquent y Query Builder. En este tutorial veremos cómo utilizar where, orWhere, when y query para crear filtros avanzados y reutilizables.

1. Uso de where


$query = Lead::query()
    ->where('state', 1)
    ->get();
    

El método where sirve para filtrar resultados con condiciones simples.

2. Uso de orWhere


$query = Lead::query()
    ->where('state', 1)
    ->where(function ($q) use ($search) {
        $q->where('nombres', 'like', "%{$search}%")
          ->orWhere('telefono', 'like', "%{$search}%")
          ->orWhere('correoelectronico', 'like', "%{$search}%");
    })
    ->get();
    
Agrupa condiciones en funciones anónimas para evitar errores de lógica.

3. Uso de when


$query = Lead::query()
    ->where('state', 1)
    ->when($stateFilter === 'active', fn($q) => $q->where('perfilcoincide', 'si'))
    ->when($stateFilter === 'inactive', fn($q) => $q->where('perfilcoincide', 'no'))
    ->when($stateFilter === 'iniciar', fn($q) => $q->where('perfilcoincide', 'iniciar'))
    ->get();
    
Tip: when hace el código más legible y limpio que usar varios if.

4. Uso de query()


$query = Lead::query(); 
$query->where('state', 1);
$results = $query->get();
    

query() se usa para inicializar consultas base que luego puedes extender dinámicamente.

5. Ejemplo completo


public function render()
{
    $this->authorize('viewAny', Lead::class);
    $user = auth()->user();

    $query = Lead::query()
        ->where('state', 1)
        ->where(function ($q) {
            $q->where('nombres', 'like', '%' . $this->search . '%')
              ->orWhere('telefono', 'like', '%' . $this->search . '%')
              ->orWhere('correoelectronico', 'like', '%' . $this->search . '%');
        })
        ->when($this->stateFilter === 'active', fn($q) => $q->where('perfilcoincide', 'si'))
        ->when($this->stateFilter === 'inactive', fn($q) => $q->where('perfilcoincide', 'no'))
        ->when($this->stateFilter === 'iniciar', fn($q) => $q->where('perfilcoincide', 'iniciar'));

    if (!$user->hasRole('Admin')) {
        $query->where('user_id', $user->id);
    }

    $leads = $query->orderBy($this->sort, $this->direction)->paginate($this->cant);
    return view('livewire.admin.lead-list', compact('leads'));
}
    

6. Comparativa rápida

Método Uso principal
where Filtrar resultados con condiciones simples.
orWhere Combinar condiciones alternativas.
when Agregar condiciones dinámicamente.
query Inicializar consultas base.

🚀 Conclusión

En Laravel 12, los métodos where, orWhere, when y query son esenciales para consultas limpias, flexibles y escalables. Con ellos puedes crear filtros dinámicos, legibles y


Etiquetas :
F