Кажется, я не могу получить метку времени в формате, который будет принимать мой обработчик базы данных.
Я запускаю эту команду в 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()
];
});
База данных:
Ваши мысли ценятся!
Задача ещё не решена.
Других решений пока нет …