これらのモジュールがあるとしましょう:
- クーポン
- 注文 (.., Coupon_id)
- アイテム (...、order_id、価格)
そして、それらの関係があります:
Coupon
たくさんありOrder
ます。Order
たくさんありItem
ます。
ここまでは順調ですね。
ここで、クーポンに属する注文に属するアイテムの価格を合計したいと考えています。そこで、次のようなことを考えました。
Coupon::orders->items->sum('price');
メソッドがリレーションのorders()
a を返すため、うまくいきません。Collection
/**
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function orders()
{
return $this->hasMany(Order::class);
}
item
プロパティが保護されているというエラーが表示されます。Item
私のモジュールとは関係がないことがわかりましCollection
たprotected $items = [];
。
それで、いくつかの事実を明らかにした後、私の質問/問題は、に属する の をitems->price
どのように合計できますか?orders
Coupon
もちろん、次のような foreach ループを実行することで目標を達成できます。
$price = 0;
foreach (Coupon:orders as $order)
$price += $order->items->sum('price');
return $price;
しかし、私はよりクリーンなソリューションを探しています。誰?