@freelance_money
Аноним

Как в laravel установить кастомную дату в NULL?

В миграции:
$table->timestamp('date_of'); // дата выдачи
Пробовал установить ->nullable() и ->default(NULL)
Все равно в базу добавляет текущую дату с временем.

Даже менял на string. Может в контроллере нужно установить при добавление записи в бд, дату в null?

При добавлении заказа, дата должна быть пустая, т.к. заказ не выдан еще. А при редактировании ставится дата выдачи.
  • Вопрос задан
  • 362 просмотра
Решения вопроса 1
ivan_zhuck
@ivan_zhuck
Верный вариант миграции timestamp для поля, которое может быть NULL:

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

Если при этом подходе дата все равно ставится, нужно смотреть какие значения передаются из контроллера, так же есть вероятность что срабатывает мутатор для этого поля.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@yoda_code
Если сделать timestamp не нулевую,

$table->timestamp('start')

то Внимание! в бд автоматически будут проставляться дефолтные значения current_timestamp при обновлении модели.

Для возможности модификации timestamp типа колонки в миграции базы данных:
Schema::table('my_table', function (Blueprint $table) {
            $table->timestamp('start')->nullable()->change();
});


нужно добавить в config/database.php строки:
use Illuminate\Database\DBAL\TimestampType;

'dbal' => [
    'types' => [
        'timestamp' => TimestampType::class,
    ],
],


Или сделать миграцию прямым запросом к базе данных, тогда ничего менять в конфиге не нужно
DB::statement('ALTER TABLE my_table MODIFY COLUMN start TIMESTAMP NULL');
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы