4
0

More than 3 years have passed since last update.

【Laravel】Carbon Data Missingエラーの対処

Posted at

問題

日付を登録・更新する際に日付フォームのパラメータで、Carbon Data Missingエラーが発生した。
(datepickerを使用していて、渡ってくる値はY-m-d H:i)

このエラーは秒(second)が入っていないなどパラメータが不足することが原因で発生するため、パラメータに秒が含まれてないときの対処法を以下で説明する

概要

日付カラムを追加するため、モデルで$datesを設定している

Model
protected $dates = [
    'public_start_at',
    'public_end_at',
];

$datesに設定しているとデフォルトでY-m-d H:i:sとなり、渡される値に過不足があると今回のようにCarbon Data Missingが起こってしまう

下記のようにdateFormatを設定することもできるが日付フィールド全体が'Y-m-d H:i'の形式になってしまうため、扱いづらい。

Model
protected $dateFormat = 'Y-m-d H:i';

対処法

パラメータに渡すときは':00'を追加することで疑似的に秒を追加して対処する

Store
 $news->public_start_at = $requestData['public_start_at'].':00';
 $news->public_end_at = $requestData['public_end_at'].':00';

ちなみにCarbonはY-m-d H:i:sの値しか受け付けない。(Y/m/dなどははじかれるので注意)

参考記事

日付ミューテタ
https://readouble.com/laravel/6.x/ja/eloquent-mutators.html

Laravel Carbon Data Missing
https://stackoverflow.com/questions/34968061/laravel-carbon-data-missing

4
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
4
0