laravel에서는 연관 관계를 기반으로 모델의 쿼리 결과를 필터링하고 이 모델에 대한 필터 조건을 추가할 수 있습니다. 이는 마스터 테이블의 슬레이브 테이블에 대한 데이터를 필터링하는 데 자주 사용됩니다. User::whereHas('슬레이브 테이블', function($...){$...->where(필터 조건);})->get()".
이 기사의 운영 환경: Windows 10 시스템, Laravel 버전 6, Dell G3 컴퓨터.
with()
with() 메소드는 "eager loading"에 사용됩니다. 이는 주로 laravel이 메인 모델과의 정확한 관계를 미리 로드한다는 것을 의미합니다. 이는 모델의 모든 관계를 추가하려는 경우 매우 유용합니다. "즉시 로드"는 1+N 쿼리 문제를 완화하므로 문제를 해결하는 데 1+1 쿼리만 필요하므로 쿼리 속도가 크게 향상됩니다.
예:
user > hasMany > post
$users = User::with('posts')->get(); foreach($users as $user){ $users->posts; // posts已经被加载了,没有增加DB查询 }
has()
has() 메소드는 연관 관계를 기반으로 모델의 쿼리 결과를 필터링하므로 해당 기능은 다음과 매우 유사합니다. where 조건. has('post')만 사용한다면 최소한 하나의 post 연결이 있는 이 모델만 가져오고 싶다는 의미입니다.
예:
user > hasMany > post
//User至少有一条post的关联关系 $users = User::has('post')->get();
"."를 사용하여 중첩된 has 문을 구성할 수도 있습니다.
예:
user > hasMany > post
$user = User::has('post.votes', ‘>’, '3')->get();
whereHas()
whereHas() 메소드는 has() 메소드와 기본적으로 동일하지만 다음에 대한 자체 필터링 조건을 추가할 수 있습니다. 이 모델 .
예:
user > hasMany > post
$users = User::whereHas('posts', function($q){ $q->where('created_at', '>=', '2017-11-29'); })->get();
【관련 추천: laravel 비디오 튜토리얼】
위 내용은 Laravel에서 어디에 사용됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!