質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.92%

売上のあった日付とその合計を表示したい

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 158

creative_09

score 62

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');
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • phper.k

    2020/07/11 15:46

    テーブル構造がわかるように、マイグレーションファイルを提示してください。

    キャンセル

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.92%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る