Laravel

Cómo usar la condición IF en una consulta SELECT en Laravel

En Laravel, es muy común necesitar aplicar condiciones IF dentro de una consulta SELECT, por ejemplo para mostrar valores personalizados, calcular campos dinámicos o aplicar lógica condicional directamente desde la base de datos.

En este artículo aprenderás cómo usar condiciones IF en consultas SELECT en Laravel, utilizando Eloquent, Query Builder y DB::raw(), con ejemplos claros y prácticos.

Opción 1: Usar IF con DB::raw() (MySQL)

Si usas MySQL, puedes utilizar la función IF() directamente.

Ejemplo básico

use Illuminate\Support\Facades\DB;


$usuarios = DB::table('users')
    ->select(
        'name',
        DB::raw("IF(status = 1, 'Activo', 'Inactivo') AS estado")
    )
    ->get();

Resultado:

  • Si status = 1 → Activo
  • Si status = 0 → Inactivo

Opción 2: Usar CASE WHEN (recomendado y estándar SQL)

CASE WHEN es más portable y funciona en MySQL, PostgreSQL y SQL Server.

Ejemplo con Query Builder

$usuarios = DB::table('users')
    ->select(
        'name',
        DB::raw("
            CASE
                WHEN status = 1 THEN 'Activo'
                ELSE 'Inactivo'
            END AS estado
        ")
    )
    ->get();

Recomendado si trabajas con distintos motores de base de datos.

Opción 3: IF condicional dinámico en Laravel

Si deseas aplicar condiciones solo cuando se cumpla algo, Laravel ofrece el método when().

Ejemplo práctico

$usuarios = DB::table('users')
    ->when(request('status'), function ($query, $status) {
        return $query->where('status', $status);
    })
    ->get();

Este enfoque es ideal para filtros dinámicos en APIs o formularios.

Conclusión

Laravel ofrece múltiples formas de usar condiciones IF en consultas SELECT, ya sea directamente en SQL con IF o CASE, o dinámicamente con when().

  • Elegir la opción correcta dependerá de:
  • El motor de base de datos
  • La complejidad de la consulta
  • El rendimiento esperado

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuarlo!

Promedio de puntuación 5 / 5. Recuento de votos: 1

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

Mostrar más

Nestor Tapia

Bloggero, amante de la programación PHP, innovador y me fascina compartir información. Desde que conocí el entorno informatico y el internet me llamó la atención la programación, Por tal motivo he creado mi blog BAULPHP.COM para compartir mis experiencias con todos ustedes. ¡Gracias por leerme!.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Esta web utiliza cookies propias para su correcto funcionamiento. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos.
Privacidad