[php] 관계 열의 Laravel Eloquent Sum

쇼핑 카트 앱을 개발 중이 었는데 지금은 다음과 같은 문제가 생겼습니다 ..

사용자, 제품 및 카트 개체가 있습니다.
-장바구니 테이블에는 “id”, “user_id”, “product_id”및 타임 스탬프 열만 포함됩니다.
-UserModel “hasMany”카트 (사용자가 여러 제품을 저장할 수 있기 때문).
-CartModel은 “belongsTo”사용자 및 CartModel “hasMany”제품입니다.

이제 총 제품을 계산하려면 다음과 같이 호출 할 수 있습니다 Auth::user()->cart()->count()..

내 질문은 :이 사용자가 장바구니에있는 제품의 가격 (제품 열)의 SUM ()을 어떻게 얻을 수 있습니까?
나는 쿼리를 사용하지 않고 Eloquent로 이것을 달성하고 싶습니다 (주로 훨씬 더 깨끗하다고 ​​믿기 때문에).



답변

Auth::user()->products->sum('price');

문서는 일부 Collection메소드에 대해 약간 가볍지 만 모든 쿼리 작성기 집계는 http://laravel.com/docs/queries#aggregatesavg() 에서 찾을 수있는 것 외에 사용할 수있는 것처럼 보입니다 .


답변

이것은 당신의 대답이 아니지만 다른 문제에 대한 해결책을 찾는 사람들을위한 것입니다. 조건부로 관련 테이블 열의 합계를 얻고 싶었습니다. 내 데이터베이스에서 거래에는 많은 활동이 있습니다. Activities 테이블에서 “amount_total”의 합계를 얻고 싶었습니다. 여기에서 activities.deal_id = deal.id 및 activities.status = 지급되었으므로이 작업을 수행했습니다.

$query->withCount([
'activity AS paid_sum' => function ($query) {
            $query->select(DB::raw("SUM(amount_total) as paidsum"))->where('status', 'paid');
        }
    ]);

그것은 반환

"paid_sum_count" => "320.00"

거래 속성에서.

이것은 지금 내가 계산하지 않고 싶었던 합계입니다.


답변

비슷한 작업을 시도했는데 collect () 함수를 파악하기까지 많은 시간이 걸렸습니다. 따라서 다음과 같이 할 수 있습니다.

collect($items)->sum('amount');

이것은 모든 항목의 합계를 제공합니다.


답변

쿼리 작성기도 사용

DB::table("rates")->get()->sum("rate_value")

테이블 요율 내의 모든 요율 값의 합계를 얻으려면.

사용자 제품의 요약을 얻으려면.

DB::table("users")->get()->sum("products")


답변