laravelで、売上のあった日付と金額を取得するために以下のようにしていますが、
金額が取得できず、困っています
また金額は該当の日付の合計金額を表示したいです
$total_day_price = Order::whereYear('created_at', $dt->year) ->whereMonth('created_at', $dt->month) ->orderBy('created_at') ->get() ->groupBy(function ($row) { return $row->created_at->format('j'); }) ->map(function ($buy_price) { return $buy_price->sum(DB::raw('price * quantity')); }); dump($total_day_price);
結果
Illuminate\Support\Collection {#539 ▼ #items: array:4 [▼ 3 => 0 6 => 0 7 => 0 8 => 0 ] }
以下のように金額だけにすると
return $buy_price->sum(DB::raw('price'));
にすると
Illuminate\Support\Collection {#539 ▼ #items: array:4 [▼ 3 => 10000 6 => 15000 7 => 500 8 => 25000 ] }
で取得できております。
個数と金額
price * quantity
の合計値を出力するにはどうすればいいのでしょうか?
よろしくお願い致します
追記
以下のコードで目的とした結果まであと一歩ですが、
データとしては取得できました。
気持ち悪いコードになっていないか心配なので、指摘がありましたらよろしくお願いいたします。
$total_day_price = DB::table('orders') ->select(DB::raw('created_at, SUM(price * quantity) as total')) // ->where('user_id', Auth::id()) ->whereYear('created_at', $dt->year) ->whereMonth('created_at', $dt->month) ->groupBy('created_at') ->get() ->groupBy(function ($row) { return $row->created_at; }) ->map(function ($buy_price) { return $buy_price->sum(DB::raw('total')); });
また、けっかまであと一歩ですが、
日付にフォーマットを入れるとエラーが出ます
return $row->created_at; を return $row->created_at->format('j'); に変更すると Call to a member function format() on string になります
以上、よろしくおねがいします
モデルへcreated_atをdatesとして追加しましたが、変化なし。
そののちに以下のコードで解決しましたが、これでいいのかわかりません・・・
スマートにしたいのですが。
return Carbon::parse($row->created_at)->format('j');
あなたの回答
tips
プレビュー