Ich versuche, Ergebnisse aus einer Tabelle mit mehreren where- und / oder Klauseln zu erhalten.
Meine SQL-Anweisung lautet:
SELECT * FROM tbl
WHERE m__Id = 46
AND
t_Id = 2
AND
(Cab = 2 OR Cab = 4)
Wie kann ich das mit Laravel Eloquent erreichen?
Mein Code in Laravel lautet:
$BType = CabRes::where('m_Id', '=', '46')
->where('t_Id', '=', '2')
->where('Cab', '2')
->orWhere('Cab', '=', '4')
->get();
$cabIds
?Wenn Sie eine Variable haben,
CabRes::where('m_Id', 46) ->where('t_Id', 2) ->where(function($q) use ($variable){ $q->where('Cab', 2) ->orWhere('Cab', $variable); }) ->get();
quelle
Wenn wir mehrere
and
(wo) Bedingungen mit der letzten (wo + oder wo) verwenden, schlägt die wo Bedingung die meiste Zeit fehl. dafür können wir die verschachtelte where-Funktion mit darin übergebenen Parametern verwenden.$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();
Die obige Abfrage überprüft alle where-Bedingungen und prüft schließlich, wo t2.status = 1 und (wobei t2.contact_users_id = '$ userid' oder wo t1.users_id = '$ userid')
quelle
Sie können stattdessen versuchen, den folgenden Code zu verwenden:
$pro= model_name::where('col_name', '=', 'value')->get();
quelle