我在用雄辯的方式計算購物車的價格時遇到一些麻煩,這是我的表格:cart_products:
- cart_id
- product_id
- quantity
products:
- price一個購物車可以有多個 cart_products,每個 cart_products 都有一個關(guān)聯(lián)的產(chǎn)品我正在從購物車模型發(fā)出請求,我試圖獲取購物車的總價格(cart_products.quantity * products.price)。這是我的查詢:Cart::select('cart.*', \DB::raw('IFNULL(SUM(products.price*cart_products.quantity), 0) AS cart_price'))
->leftJoin('cart_products', 'cart.id', '=', 'cart_products.cart_id')
->join('products', 'cart_products.product_id', '=', 'products.id');當(dāng)我這樣做時,我確實得到了預(yù)期的結(jié)果,但所有不包含產(chǎn)品的購物車都被排除在外,我希望它們被包含在內(nèi)。我怎樣才能將它們包括在內(nèi)?還是有更好的方法來做到這一點(我看到了withCount方法,但無法使其正常工作)?
2 回答

GCT1015
TA貢獻1827條經(jīng)驗 獲得超4個贊
另一種方法是在您的購物車模型中設(shè)置虛擬關(guān)系并計算您的購物車價格,例如
class Cart extends Model
{
public function price()
{
return $this->hasOne(CartProducts::class, 'cart_id')
->join('products as p', 'product_id', '=', 'p.id')
->groupBy('cart_id')
->selectRaw('cart_id,IFNULL(SUM(products.price*cart_products.quantity), 0) as cart_price');
}
}
要獲取購物車的價格數(shù)據(jù),您可以查詢?yōu)?/p>
Cart::with('price')->get()->sortByDesc('price.cart_price');

長風(fēng)秋雁
TA貢獻1757條經(jīng)驗 獲得超7個贊
我最終設(shè)法使用原始 SQL 以另一種方式做到這一點:
Cart::select('cart.*', \DB::raw('(SELECT IFNULL(SUM(products.price*cart_products.quantity), 0) from cart_products join products on products.id = cart_products.product_id where cart_products.cart_id = cart.id) AS cart_price'));
感謝大家的幫助!
- 2 回答
- 0 關(guān)注
- 146 瀏覽
添加回答
舉報
0/150
提交
取消