Laravel Eloquent 살펴보기: whereRelation
및 실제 응용 프로그램 탐색
이 게시물에서는 whereRelation
메서드에 초점을 맞추고 이전 whereHas
메서드와 비교하면서 Laravel의 Eloquent ORM을 살펴봅니다. 장점과 한계를 검토하여 최적의 사용법을 안내해 드리겠습니다.
시나리오: 주문이 완료된 사용자를 검색합니다. Laravel 8 이전에는 whereHas
이 관련 테이블 열을 쿼리하는 표준이었습니다. Laravel 8에서는 보다 간결한 구문을 제공하는 whereRelation
을 도입했습니다.
향상된 구문이 더 깔끔해졌습니다!
성능 및 한계: 일반적인 오해는 whereRelation
가 whereHas
보다 성능이 뛰어나다는 것입니다. 그러나 분석에 따르면 둘 다 동일한 SQL 쿼리를 생성하는 것으로 나타났습니다.
whereHas
쿼리:
<code class="language-sql">select * from `users` where exists ( select * from `orders` where `users`.`id` = `orders`.`created_by` and `status` = ? and `orders`.`deleted_at` is null ) and `users`.`deleted_at` is null</code>
whereRelation
쿼리:
<code class="language-sql">select * from `users` where exists ( select * from `orders` where `users`.`id` = `orders`.`created_by` and `status` = ? and `orders`.`deleted_at` is null ) and `users`.`deleted_at` is null</code>
가장 큰 차이점은 기능에 있습니다. whereRelation
은 관련 테이블의 단일 조건으로 제한되는 반면 whereHas
은 단일 하위 쿼리 내에서 여러 조건을 지원합니다. whereRelation
각 조건에 대해 별도의 하위 쿼리를 생성하므로 여러 기준에 대해 비효율적입니다.
코드 가독성과 효율성을 위해서는 올바른 Eloquent 메소드를 선택하는 것이 중요합니다. whereHas
또는 whereRelation
을 선택하기 전에 쿼리의 복잡성을 고려하세요. 즐거운 코딩하세요! ?
위 내용은 Laravel 팁: whereHas 또는 whereRelation?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!