[PHP][Laravel][SQL] Laravelã®Eloquentã§ WHERE A OR B ã宿½ï¼æ¡ä»¶ã«ããorWhereæ¡ä»¶ã追å ï¼
ãã¼ã¸ã§ã³
Laravel 6.0
æ¦è¦
Eloquentã§ä»¥ä¸ã表ç¾ããã
WHERE (hoge = 1 AND fuga = 2) OR (foo = 3 AND bar = 4)
ããã«ORæ¡ä»¶ã¯æ¡ä»¶åå²ã«ãã追å ãã/ããªãã夿ãããã
å®ç¾ãããSQL
SELECT students.name, clubs.name FROM students LEFT JOIN clubs ON students.club_id = clubs.id AND clubs.code = 4 WHERE (students.grade > 5 and clubs.type = 1) OR (students.grade in (1,3) and students.area_code = 10) ORDER BY students.created_at desc
Models/student.php
$query = self::select(['students.name as students_name', 'clubs.name as clubs_name']) ->leftjoin('clubs', function ($join) { $join->on('students.club_id', '=', 'clubs.id') >where('clubs.code', config('club.code.D')); }) ->where(function ($q) use ($grade) { $q->orWhere('students.grade', '>', $grade) >where('clubs.type', config('club.type.BUNKAKEI')); }); if ($grades) { $query = $query->orWhere(function ($q) use ($grades) { $q->orWhereIn('students.grade', $grades) ->where('students.area_code', config('students.area_code.TOKYO')); }); return $query->orderBy('students.created_at', 'desc') ->get() ->toArray(); }

PHPãã¬ã¼ã ã¯ã¼ã¯ Laravelå®è·µéçº
- ä½è :æç°æ´¥è¶ä¹
- çºå£²æ¥: 2019/08/22
- ã¡ãã£ã¢: Kindleç