>데이터 베이스 >MySQL 튜토리얼 >Laravel의 `whereIn` 절과 함께 하위 쿼리를 사용하는 방법은 무엇입니까?

Laravel의 `whereIn` 절과 함께 하위 쿼리를 사용하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-07 12:47:16930검색

How to Use Subqueries with Laravel's `whereIn` Clause?

Laravel 쿼리에 하위 쿼리 통합: WHERE IN 예제

복잡한 데이터베이스 쿼리를 처리할 때 하위 쿼리는 데이터를 검색하는 강력한 방법을 제공합니다. 여러 테이블에서 가져오거나 계산을 기반으로 결과를 필터링합니다. 널리 사용되는 PHP 프레임워크인 Laravel은 하위 쿼리 작업을 위한 사용하기 쉬운 인터페이스를 제공합니다.

문제:

Laravel에서 다음을 추출하는 쿼리를 작성해야 합니다. "product_category" 테이블의 값을 기반으로 필터링하기 위해 하위 쿼리를 사용하는 "products" 테이블의 데이터입니다. 특히 다음 기준을 충족하는 행을 포함하려고 합니다.

  • "products" 테이블의 "id"는 "product_category" 테이블의 "product_id" 열에 나타나야 합니다.
  • 카테고리 ID 값은 "product_category" 테이블에서 '223' 또는 '15'입니다.
  • "active" "products" 테이블의 열은 1로 설정됩니다.

해결책:

이를 달성하기 위해 Laravel은 하위 쿼리를 쿼리에 통합하는 유연한 방법을 제공합니다. 사용하여 클로저:

Products::whereIn('id', function($query){
    $query->select('product_id')
    ->from(with(new ProductCategory)->getTable())
    ->whereIn('category_id', ['223', '15'])
    ->where('active', 1);
})
->get();
  1. 하위 쿼리 정의(클로저 내):

    • 함수($query): 클로저를 정의하는 클로저 subquery.
    • $query->select(...): 어떤 열을 지정합니다. 검색하려는 하위 쿼리에서. 이 경우에는 "product_id"입니다.
    • from(with(new ProductCategory)->getTable()): 하위 쿼리에 대한 데이터를 가져올 테이블을 결정합니다. "product_category" 테이블을 참조합니다.
    • ->whereIn('category_id', ['223', '15']): 하위 쿼리에 대한 필터 조건을 설정하여 "category_id"가 있는 행으로 결과를 제한합니다. '223' 또는 '15'입니다.
    • ->where('active', 1): 추가 "product_category" 테이블에서 "active"가 1로 설정되도록 하는 추가 필터.
  2. 기본 쿼리:

    • whereIn('id', ...): 클로저에 정의된 하위 쿼리를 활용하는 메인 쿼리입니다. "products" 테이블의 "id" 열과 하위 쿼리 결과의 "product_id"가 일치합니다.

위 내용은 Laravel의 `whereIn` 절과 함께 하위 쿼리를 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.