질문을 삭제하지 말아주세요.!
 
1
0
-1

수량과 판매금액 할인 금액을 모두 계산한 총 합을 구하고 싶습니다.

쿼리로 예를 들면

SELECT SUM(price * quantity) - SUM(discount_amount * quantity) WHERE ORDER_ID = 1234

이런식의 쿼리가 되는데 이걸 eloquent로 표현할 수 있을까요?

안되면 get()으로 가져온 후 foreach로 계산을 해야 할까요?

    CommentAdd your comment...

    1 answer

    1.  
      2
      1
      0

      DB의 데이터만으로 계산할 수 있는 결과물이라면, DB 쿼리를 이용하는 것이 성능 측면에서 좋습니다. 공식 문서나 웹 상에서 DB::raw()를 찾아보시면 될 듯 합니다.

      반면 DB 쿼리만으로 값을 계산할 수 없는 경우에는, PHP 측에서 CPU와 메모리를 이용해서 루프를 돌면서 계산하는데요. 대략 이런 식이 될 겁니다.

      $lineItems = OrderLine::query()->whereOrderId(1234)->get();
      $totalAmount = $lineItems->recude(function (int $carry, OrderLine $lineItem) {
          return $carry + (($lineItem->price - $lineItem->discount_amount)* $lineItem->quantity);
      }, 0);
        CommentAdd your comment...