使用Faker设置MySQL时间戳字段

时间:2015-10-11 20:07:25

标签: php laravel laravel-5 faker

我似乎无法以我的数据库播种机将接受的格式获取时间戳。

我在php artisan tinker中运行此命令:

$faker->dateTimeThisYear($max = '+1 year')->format('Y-m-d H:i:s')

产生:

"2015-03-17 01:26:44"

据我所知,这与数据库期望的格式(0000-00-00 00:00:00)相匹配。但是,当我尝试播种数据库时,我得到以下错误:

 [InvalidArgumentException]                
  The separation symbol could not be found  
  Unexpected data found.                    
  Hour can not be higher than 12            
  Unexpected data found.                    
  A meridian could not be found

我尝试过的所有其他变体包括传递一个实际的DateTime对象也没有用。甚至不是这种格式:'YYYY-MM-DD HH:mm:ss'

这不起作用:

DateTime::createFromFormat('Y-m-d H:i:s', '2000-05-05 22:22:22')

错误:

DateTime::createFromFormat() expects parameter 2 to be string, object given

最令人不安的是,在该列的迁移中,我可以指定Carbon::now()作为默认值,它可以正常工作。只有在播种时才会出现这些错误。它甚至不允许我在播种时使用Carbon::now()

迁移:

$table->timestamp('time_available')->default(Carbon::now());

接种:

$factory->define(App\AvailableMeeting::class, function (Faker\Generator $faker) {
return [
    'office_id' => 1,
    'worker_id' => 1,
    'length_minutes' => $faker->numberBetween(14,61),
    'time_available' => $faker->dateTimeThisYear('+1 year')->format('Y-m-d H:i:s') // doesn't work.. neither does Carbon::now()
    ];
});

数据库:

database

您的意见表示赞赏!

0 个答案:

没有答案