Доктрина 3 «по умолчанию» => «CURRENT_TIMESTAMP» не работаетPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Доктрина 3 «по умолчанию» => «CURRENT_TIMESTAMP» не работает

Сообщение Anonymous »

Как обрабатывать значения даты и времени по умолчанию в объектах доктрины?
Я работаю со следующим кодом:

Код: Выделить всё

#[Entity]
#[Table(name: 'messages')]
class Message
{
#[Column(name: 'sent_at', type: Types::DATETIME_IMMUTABLE, updatable: false, options: ['default' => 'CURRENT_TIMESTAMP'])]
private readonly DateTimeImmutable $sent_at;
...
}
и orm:schema-tool:create --dump-sql похоже, выдает правильный SQL

Код: Выделить всё

CREATE TABLE messages (
id int unsigned AUTO_INCREMENT NOT NULL,
sent_at datetime DEFAULT CURRENT_TIMESTAMP NOT NULL,
message text NOT NULL,
PRIMARY KEY (id)
);
но когда я пытаюсь создать такой объект без ручной настройки send_at (ожидая, что он будет использовать текущую метку времени по умолчанию)

Код: Выделить всё

$message = new Message($message);
$this->entity_manager->persist($message);
$this->entity_manager->flush();
Я получаю следующую ошибку:

Код: Выделить всё

Uncaught PDOException: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'sent_at' cannot be null in vendor/doctrine/dbal/src/Driver/PDO/Statement.php:55
Что вызывает эту ошибку и как я могу правильно установить значение метки времени по умолчанию для send_at в Doctrine?
Я бы не хотел устанавливать send_at вручную< /code> в конструкторе, если это возможно.

Код: Выделить всё

"doctrine/orm": "^3.0",
"doctrine/dbal": "^4.0",
Изменить:
вывод SELECT VERSION();: 10.4.28-MariaDBЕсли быть точным, причина где-то в PHP/Doctrine, потому что

Код: Выделить всё

INSERT INTO `messages` (`message`) VALUES ('message')
правильно вставляет строку с текущей отметкой времени.


Подробнее здесь: https://stackoverflow.com/questions/791 ... ot-working
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»