Laravel DB Query Builder 논리적 그룹화에 대해 작성한다.
복잡한 쿼리의 작성 및 우선순위 조정을 위해 where 절을 그룹화할 필요가 있을때 Laravel 에서는 where 메서드에 클로저를 전달할 수 있다.
// 쿼리빌더
$users = Music::with('album')
->where(function ($query) {
$query->where('title', 'like', '%'.$searchText.'%')
->orWhere('album.title', 'like', '%'.$searchText.'%');
})->where(function ($query) {
$query->where('genre', 'Jazz')
->where('sub_genre', 'Lofi Jazz')
})->orderBy('idx','desc')
->get();
// 위 쿼리빌더를 통해 생성되는 쿼리
select * from music
left join album on music.album_idx = album.idx
where (music.title like '%searchtext%' or album.title like '%searchtext%')
and (music.gerne = 'Jazz' and music.sub_genre = 'Lofi Jazz');
참고자료:
반응형
'개발 > Laravel' 카테고리의 다른 글
Laravel 현지화 URL Prefix 미들웨어 처리 (0) | 2021.10.13 |
---|---|
Laravel 8.0 이상 fortify 회원가입 완료 페이지 연결 (0) | 2021.08.23 |
Laravel 8 사용자 라이브러리 추가 (0) | 2021.04.02 |
Laravel Socialite와 SocialiteProvider를 활용한 다중인증 소셜로그인 및 동적 URL 처리 (0) | 2021.03.09 |
Laravel Mix (0) | 2021.01.19 |