0
0

More than 1 year has passed since last update.

今日の日付を取得する Carbon

Posted at

こんにちは。ソウタです。

特定のデータの取得の仕方についてメモも兼ねて、アウトプットしていきたいと思います。

Laravelで料理注文アプリを作っていたので、アプリのコードを元に説明していきたいと思います!

まず、ユーザーが料理を注文し、注文を受けたレストランが「今日の注文履歴」をみたいので、それをフロントに表示させたい過程にいると仮定します。(ユーザーが注文する所は省略)

php.RestaurantController.php
use Carbon\Carbon;

Carbonを使うので、use宣言をコントローラに書く。

RestaurantController.php
public function RestaurantAccount()
    {
        $restaurantId = Auth::user()->id;

        // クエリ(SQL)を変数へ一旦入れておくとコードがスッキリする。
        $query = Restaurant::find($restaurantId)->orders();
        // ログインしているレストランに紐づく注文を全件取得
        $orders = $query->get();
                // デバックで注文がちゃんと取得できているか確認。
        // dd($orders);
        // レストランに紐づく注文のうち、今日の注文のみ取得
        $today_orders = $query->where('created_at', Carbon::today())->get();
                 // デバックで注文がちゃんと取得できているか確認。
        // dd($today_orders);
        return view('restaurant.restaurant_account', ['orders' => $orders, 'today_orders' => $today_orders]);
    }

コードは書いてみたのの、データがとれていない。あらら。

色々とググり。判明。
以下のサイトを参考にしてみました。
https://biz.addisteria.com/laravel_carbon/

まず、日本時間でデータを取得しないといけないので、、、、timezoneをconfig.app.phpで変更。
デフォルトでUSで設定されている。

config/app.php
 // これを消す
'timezone' => 'US',
// 追加
'timezone' => 'Asia/Tokyo',

どうやら、whereではなく、whereDateにしないといけないらしい。

RestaurantController.php
 $today_orders = $query->whereDate('created_at', Carbon::today())->get();

修正し、デバック。

 "created_at" => "2022-01-02 20:17:29"
 "updated_at" => "2022-01-02 20:17:29"

具体的な注文情報は、割愛しますが、しっかり取得できていました。よかった。。。。

新年も頑張っていきたいと思います。
よかったと思ったら、LGTMボタンを押してください!!やる気が出るんです!!笑

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0