Programing

Laravel-Eloquent "Has", "With", "WhereHas"-무슨 뜻입니까?

crosscheck 2020. 5. 20. 21:32
반응형

Laravel-Eloquent "Has", "With", "WhereHas"-무슨 뜻입니까?


나는이 방법들 뒤에 숨겨진 개념과 의미가 약간 혼란 스럽다는 것을 발견했습니다. 누군가가 가능한지 예제 has와 관련 하여 차이점 차이점을 설명해 줄 with수 있습니까?


with()위한 열망로드 . 기본적으로 Laravel은 사용자가 지정한 관계를 미리로드한다는 의미입니다. 모델 모음이 있고 모든 모델에 대한 관계를로드하려는 경우 특히 유용합니다. 로딩이 열리면 컬렉션의 모든 모델에 대해 하나가 아닌 하나의 추가 DB 쿼리 만 실행하기 때문입니다.

예:

User > hasMany > Post

$users = User::with('posts')->get();
foreach($users as $user){
    $users->posts; // posts is already loaded and no additional DB query is run
}

있다

has()관계에 따라 선택 모델을 필터링하는 것입니다. 따라서 일반적인 WHERE 조건과 매우 유사하게 작동합니다. 그냥 사용 has('relation')하면이 관계에서 하나 이상의 관련 모델이있는 모델 만 가져 오기를 의미합니다.

예:

User > hasMany > Post

$users = User::has('posts')->get();
// only users that have at least one post are contained in the collection

어디에

whereHas()기본적으로 동일하게 작동 has()하지만 관련 모델에서 확인할 추가 필터를 지정할 수 있습니다.

예:

User > hasMany > Post

$users = User::whereHas('posts', function($q){
    $q->where('created_at', '>=', '2015-01-01 00:00:00');
})->get();
// only users that have posts from 2015 on forward are returned

참고 URL : https://stackoverflow.com/questions/30231862/laravel-eloquent-has-with-wherehas-what-do-they-mean

반응형