LoginSignup
0
0

More than 1 year has passed since last update.

【Laravel】シーダーファイルで投稿時刻と更新時刻を出したい

Posted at

php artisan db:seed --class=PostsTableSeederしたら怒られた。

開発環境

MySQL 5.7.38
PHP 7.3.33
Laravel 6.20.44

エラー文

Terminal
SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value
: '1658634263' for column 'created_at' at row 1
 (SQL: insert into `posts` (`user_id`, `title`, `body`, `created_at`, `updated_at`)
 values (2, title1, body1, 1658634263, 1658634263))

何が起こっている?

時間の型が違う。
当初、シーダーファイルでは

PoststableSeeder.php
'created_at' => time(),
'updated_at' => time()

としていた。

が、マイグレーションファイルに設定されているtimestamp型は 'YYYY-mm-dd HH:MM:SS'という形。
これに対し上記time型は 'HH:MM:SS'という形だったことによるアンマッチ。

どうしたらいい?

DateTime型を指定する。
つまりシーダーファイルの怒られていた部分を

PostsTableSeeder.php
'created_at' => new DateTime(),
'updated_at' => new DateTime()

としてやればよい。

参照)
日付型と時刻型(DATE, TIME, DATETIME, TIMESTAMP, YEAR)
MySQLの不正な日時値エラーを修正する方法

そうしてから改めて

Terminal
php artisan db:seed --class=PostsTableSeeder

すると・・・

できた~!!!\(^o^)/

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