Laravel은 해당 레코드의 순서가 다른 테이블에 의존하는 테이블에서 모든 레코드를 찾습니다.

주갈 키 쇼어 찬다

내 데이터베이스 스키마는

products
--id
--name

orders
--id
--product_id
--quantity

여기에서 모든 제품을 찾고 싶습니다. 제품 수량의 합계가 적 으면 제품의 순서가 먼저 나타나고 제품 수량의 가장 높은 합계가 마지막에 나타납니다. 이를 위해 내 동등한 MySQL 코드는

SELECT *
FROM products p
JOIN (
SELECT product_id,sum(quantity) as s
FROM orders
GROUP BY (product_id)) i on p.id = i.product_id
ORDER BY s ASC

laravel에서 어떻게 쉽게 할 수 있습니까?

M 칼리드 주 나이드

나는 당신이 이미 제품 hasMany()주문 과 같은 적절한 관계로 모델을 설정했다고 믿습니다. 그러면 eloquent를 사용하면 주문 수량의 합계와 함께 제품을 얻을 수 있습니다.withSum

 $products = Product::withSum('orders', 'quantity')
                    ->orderBy('orders_sum_quantity')
                    ->get();

지원하지 않는 이전 버전의 laravel을 사용하는 경우 방법을 withSum다음 withCount과 같이 조정할 수 있습니다.

 $products = Product::withCount([
                            'orders as quantity' => function ($query) {
                                        $query->select(DB::raw("sum(quantity)"));
                            }
                    ])->orderBy('quantity')
                      ->get();

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관