https://laravel.kr/docs/6.x/eloquent-relationships#querying-relationship-existence
- 각 모델간의 관계를 설정후 , 조인없이 쿼리하기
- 최종 변환된 쿼리에서 서브 쿼리로 작성됨
//--------------------------------------------------
< 존재하는 관계에 대한 쿼리 질의하기 >
//-----------------
* has (, orHas )
- comments가 1개 이상인 것
- sub query
$posts = App\Post::has('comments')->get();
- comments 모델에 votes 관계가 정의되어 있는 경우 사용가능
$posts = App\Post::has('comments.votes')->get();
- comments가 3개 이상인 것
$posts = App\Post::has('comments', '>=', 3)->get();
//--------------
* whereHas (, orWhereHas )
- has에 where 절 사용
- comments 모델에서 content_no가 3 이상인것
- 기본으로 soft delete가 적용된다. soft delete를 적용하지 않으려면 withTrashed() 사용
$posts = App\Post::whereHas('comments', function (Builder $query) {
$query->where('content_no', '<', 3)->withTrashed();
})->get();
- comments 모델에서 content_no가 3 이상이고, 그런 comments가 10개 이상
$posts = App\Post::whereHas('comments', function (Builder $query) {
$query->where(content_no', '<', 3);
}, '>=', 10)->get();
//--------------------------------------------------------
< 관계된 모델이 존재하지 않는 것을 확인하며 질의하기 >
* doesntHave (, orDoesntHave )
- where 절 사용 가능
whereDoesntHave (, orWhereDoesntHave )
- comments가 없는 것 조회
$posts = App\Post::doesntHave('comments')->get();
- where 절 사용
$posts = App\Post::whereDoesntHave('comments', function (Builder $query) {
$query->where('content', 'like', 'foo%');
})->get();
'Code > PHP' 카테고리의 다른 글
[워드프레스] insites 테마 세부 설정 (0) | 2020.08.02 |
---|---|
[php] 워드프레스 설치 (0) | 2020.07.31 |
[라라벨] 설정된 관계로 질의 하기 (0) | 2020.04.20 |
[php] php에서 자바스크립트 함수 실행하는 방법 (v8js) (0) | 2020.04.10 |
[PHP] underscore(lodash) 같은 라이브러리 (0) | 2020.04.05 |
[php] PCNTL ( Process Control) 확장 사용법 예제 (0) | 2020.03.25 |
댓글을 달아 주세요