php - conectar - paginate laravel
Laravel Eloquent donde el campo es X o nulo (1)
Suena como que necesitas hacer uso de cláusulas avanzadas donde .
Dado que la búsqueda en field1
y field2
es constante, las dejaremos como están, pero vamos a ajustar un poco su búsqueda en el datefield
de datefield
.
Prueba esto:
$query = Model::where(''field1'', 1)
->whereNull(''field2'')
->where(function ($query) {
$query->where(''datefield'', ''<'', $date)
->orWhereNull(''datefield'');
}
);
Si alguna vez necesita depurar una consulta y ver por qué no funciona, puede ayudar a ver qué SQL se está ejecutando realmente. Puede encadenar ->toSql()
al final de su consulta elocuente para generar el SQL.
Tengo una mesa como esta:
table
- field1: tinyint
- field2: varchar (nullable)
- datefield: timestamp (nullable)
Ahora quiero obtener todas las entradas donde campo1 es 1, campo2 es nulo y donde el campo de fecha es más pequeño que X o nulo. Ya probé algo como esto:
$query = Model::where(''field1'', 1)
->whereNull(''field2'')
->where(''datefield'', ''<'', $date)
->orWhereNull(''datefield'');
pero eso no funciona. Siempre recibo todas las entradas donde el campo de fecha es nulo. No importa cuáles sean los otros campos. También intenté dividirlo en 2 consultas: primero obtenga cada fila donde el campo de fecha sea más pequeño que X o nulo y luego (en base a ello) obtenga cada campo donde campo1 sea 1 y campo2 sea nulo.
El resultado fue el mismo. ¿Alguna idea de cómo hacer esto?