エンジニアのひよこ_level10

【毎日更新!】新卒3年目エンジニアブログです!

【Laravel】データベースから日付データ取ったら、文字列でデータが来た時の対応【426日目】

モデルの時間を取ろうとしたら、文字列・・・

    User::where('id', 5)->start_at->gte(Carbon::now());

usersテーブルの日付データを使って、時間の比較をしようとしたら、 start_atが文字って言われた(T_T)

どうせなら、日付データはCarbonとかで取ってきてほしい!!!

Userモデルクラスに、datesを書く

class User extends Model {
    protected $dates   = ['start_at', 'end_at'];
}

このように、該当するモデルクラスに、 dates変数を定義して、日付データのカラム名を入れる。

これだけで良い!

どうなるの

$datesで指定したカラムは、戻り値がCarbonになって返ってきます!

なので、スムーズに日付の比較が出来ます。これなら最初のコードも動きます。

あ、もちろんですけど、ちゃんと元のカラムのデータは日付データにしてくださいね。datetimeとか。

お疲れ様でした。