Laravel Eloquent를 사용하여 Max Created_at로 최신 행 검색
Laravel Eloquent에서 각 고유 필드에 대한 최신 행 검색은 다음을 통해 수행할 수 있습니다. 포괄적인 접근 방식. 판매를 추적하는 특정 테이블에서 각 항목에는 id, Seller_id, amount 및 Created_at와 같은 필드가 포함되어 있으며, 목표는 각 Seller_id에 대한 가장 최근 행을 검색하는 것입니다.
최신 검색 특정 판매자에 대한 행
특정 판매자에 대한 최신 행을 얻기 위해 Laravel Eloquent는 다음과 같은 간단한 방법을 제공합니다.
<code class="php">$sales = Snapshot::where('seller_id', '=', 15) ->orderBy('created_at', 'DESC') ->first();</code>
이 쿼리는 Snapshot 테이블에서 모든 레코드를 선택합니다. Seller_id가 15이고,created_at를 기준으로 내림차순으로 주문하고 첫 번째 행을 검색하여 해당 판매자의 최신 판매를 효과적으로 반환합니다.
각 판매자의 최신 행 검색
이 접근 방식을 확장하여 각 개별 판매자의 최신 행을 검색하려면 더욱 발전된 전략이 필요합니다. 다음 SQL 쿼리는 이 작업을 수행합니다.
<code class="sql">select s.* from snapshot s left join snapshot s1 on s.seller_id = s1.seller_id and s.created_at < s1.created_at where s1.seller_id is null
이 쿼리에서 하위 쿼리 s1은 s.created_at < s1.created_at - 후속 행에 나중에 생성된_at 타임스탬프가 있는 레코드만 포함되도록 합니다. 그런 다음 외부 쿼리는 하위 쿼리에 일치하는 행이 없는 기본 테이블의 모든 행을 선택하여 각 Seller_id에 대한 최신 레코드를 효과적으로 격리합니다.
Laravel Eloquent에서 쿼리 구현
Laravel Eloquent를 사용하여 이 쿼리를 구현하려면 쿼리 빌더 방법을 활용할 수 있습니다.
<code class="php">DB::table('snapshot as s') ->select('s.*') ->leftJoin('snapshot as s1', function ($join) { $join->on('s.seller_id', '=', 's1.seller_id') ->whereRaw(DB::raw('s.created_at < s1.created_at')); }) ->whereNull('s1.seller_id') ->get();</code>
이 쿼리는 스냅샷 테이블과 하위 쿼리 간에 왼쪽 조인을 수행하여 SQL 쿼리의 기능을 복제합니다. (s1)은 각 Seller_id에 대한 이후 행을 식별합니다. whereNull 조건은 후속 행이 있는 행을 필터링하여 각 Seller_id에 대한 최신 레코드만 남깁니다. 이 쿼리를 실행하면 테이블의 각 고유 판매자에 대한 가장 최근 판매 컬렉션이 반환됩니다.
위 내용은 Laravel Eloquent를 사용하여 테이블의 각 고유 판매자에 대한 최신 행을 어떻게 검색할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!