updateorcreate operador left inner and sql laravel eloquent

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();