Установите поле MySQL Timestamp, используя 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()
];
});

База данных:

база данных

Ваши мысли ценятся!

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]