search
LoginSignup
0
Help us understand the problem. What are the problem?

posted at

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

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^)/

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
What you can do with signing up
0
Help us understand the problem. What are the problem?