sql - operador - Laravel 5 Eloquent donde y o en Cláusulas
operador and en laravel (3)
Además, si tiene una variable,
CabRes::where(''m_Id'', 46)
->where(''t_Id'', 2)
->where(function($q) use ($variable){
$q->where(''Cab'', 2)
->orWhere(''Cab'', $variable);
})
->get();
Intento obtener resultados de una tabla con múltiples cláusulas where y / o.
Mi declaración SQL es:
SELECT * FROM tbl
WHERE m__Id = 46
AND
t_Id = 2
AND
(Cab = 2 OR Cab = 4)
¿Cómo puedo conseguir esto con Laravel Eloquent?
Mi código en Laravel es:
$BType = CabRes::where(''m_Id'', ''='', ''46'')
->where(''t_Id'', ''='', ''2'')
->where(''Cab'', ''2'')
->orWhere(''Cab'', ''='', ''4'')
->get();
Cuando usamos condición múltiple
and
(where) con last (where + o where), la condición where falla la mayor parte del tiempo.
para eso podemos usar la función where anidada con parámetros que pasan en eso.
$feedsql = DB::table(''feeds as t1'')
->leftjoin(''groups as t2'', ''t1.groups_id'', ''='', ''t2.id'')
->where(''t2.status'', 1)
->whereRaw("t1.published_on <= NOW()")
>whereIn(''t1.groupid'', $group_ids)
->where(function($q)use ($userid) {
$q->where(''t2.contact_users_id'', $userid)
->orWhere(''t1.users_id'', $userid);
})
->orderBy(''t1.published_on'', ''desc'')->get();
La consulta anterior valida toda la condición where y finalmente comprueba dónde t2.status = 1 y (donde t2.contact_users_id = ''$ userid'' o where t1.users_id = ''$ userid'')
Usando wheres avanzados :
CabRes::where(''m__Id'', 46)
->where(''t_Id'', 2)
->where(function($q) {
$q->where(''Cab'', 2)
->orWhere(''Cab'', 4);
})
->get();
O, mejor aún, usando
whereIn()
:
CabRes::where(''m__Id'', 46)
->where(''t_Id'', 2)
->whereIn(''Cab'', $cabIds)
->get();