반응형
Laravel 5 Eloquent where 및 또는 in 절
여러 where 및 / 또는 절이있는 테이블에서 결과를 얻으려고합니다.
내 SQL 문은 다음과 같습니다.
SELECT * FROM tbl
WHERE m__Id = 46
AND
t_Id = 2
AND
(Cab = 2 OR Cab = 4)
Laravel Eloquent로 어떻게 얻을 수 있습니까?
Laravel의 내 코드는 다음과 같습니다.
$BType = CabRes::where('m_Id', '=', '46')
->where('t_Id', '=', '2')
->where('Cab', '2')
->orWhere('Cab', '=', '4')
->get();
고급 위치 사용 :
CabRes::where('m__Id', 46)
->where('t_Id', 2)
->where(function($q) {
$q->where('Cab', 2)
->orWhere('Cab', 4);
})
->get();
또는 다음을 사용하는 것이 더 좋습니다 whereIn()
.
CabRes::where('m__Id', 46)
->where('t_Id', 2)
->whereIn('Cab', $cabIds)
->get();
또한 변수가 있으면
CabRes::where('m_Id', 46)
->where('t_Id', 2)
->where(function($q) use ($variable){
$q->where('Cab', 2)
->orWhere('Cab', $variable);
})
->get();
and
last (where + 또는 where)와 함께 여러 (where) 조건을 사용하면 where 조건이 대부분 실패합니다. 이를 위해 매개 변수가 전달되는 중첩 된 where 함수를 사용할 수 있습니다.
$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();
위의 쿼리는 모든 where 조건의 유효성을 검사 한 다음 마지막으로 t2.status = 1 및 (여기서 t2.contact_users_id = '$ userid'또는 where t1.users_id = '$ userid') 위치를 확인합니다.
참고 URL : https://stackoverflow.com/questions/30434037/laravel-5-eloquent-where-and-or-in-clauses
반응형
'code' 카테고리의 다른 글
C에서 구조체 확장 (0) | 2020.11.30 |
---|---|
교리 캐스케이드 연산 이해 (0) | 2020.11.30 |
Scala 배열을 Scala vararg 메서드에 전달하는 방법은 무엇입니까? (0) | 2020.11.30 |
HTTP / 2에서 멀티플렉싱의 의미 (0) | 2020.11.30 |
Enum의 초기 값 (0) | 2020.11.30 |