Eloquent: неверное значение по умолчанию с отметками времени

Вот моя схема миграции:

public function up()
{
Schema::create('objects', function (Blueprint $table) {
$table->increments('id');
$table->timestamp('timestamp1');
$table->timestamp('timestamp2');
});
}

Но когда я выполню php artisan migrateЯ получаю эту ошибку:

Подсветка \ База данных \ QueryException: SQLSTATE [42000]: синтаксическая ошибка или нарушение доступа: 1067 Неверное значение по умолчанию для ‘timestamp2’ (SQL: создать таблицу objects (id int unsigned не нулевой первичный ключ auto_increment, timestamp1 временная метка не нулевая, timestamp2 отметка времени не равна нулю) набор символов по умолчанию utf8mb4 collate utf8mb4_unicode_ci)

Я должен указать, что когда я удаляю один из 2 $table->timestamp(...); Линии это работает, но это не так, когда есть оба. И Object.php Модель пуста, как это может быть. Я сделал ошибку?

я прочитал эта почта, но хотя ошибок больше нет когда меняю timestamp(...) в dateTime(...)Я хочу только метки времени.

3

Решение

я нашел этот Решение по Laracasts:

nullableTimestamps() только для полей по умолчанию created_at, updated_at, для пользовательских полей используйте timestamp()->nullable();

2

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

Вы можете сделать одну из двух меток времени обнуляемой, используя

timestamp()->nullable();

используя ваш пример, вы бы использовали:

$table->timestamp('timestamp2')->nullable();

Также laravel имеет встроенные временные метки, используя

$table->timestamps();

который будет автоматически обрабатывать метки времени updated_at и made_at для вас

2

Временные метки немного особенные, они должны либо иметь значение NULL, либо иметь значение по умолчанию. Таким образом, вы должны выбрать между timestamp('timestamp1')->nullable(); или же timestamp('timestamp1')->useCurrent() или пользовательское значение по умолчанию, например timestamp('timestamp1')->default(DB::raw('2018-01-01 15:23')),

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