Как предотвратить переопределение столбца Doctrine сгенерированным значением? - PullRequest
0 голосов
/ 10 апреля 2020

У меня есть столбец базы данных с именем modified с определением ON UPDATE CURRENT_TIMESTAMP.

Когда я изменяю и сохраняю существующий объект, столбец остается со старым значением, поскольку оно уже установлено в свойстве объекта. Есть ли способ сказать Doctrine не устанавливать это свойство объекта при сохранении?

Я получил желаемый результат, используя unset перед сохранением, но это сделает код грязным, так как не все объекты имеют это свойство .

unset($object->modified);
$entityManager->persist($object);

1 Ответ

0 голосов
/ 23 апреля 2020

Решил, добавив LifecycleEvent.

В моем ClassMetadataBuilder у меня есть метод для создания поля:

public function addModifiedTimeField(): void {
    $this->createField("modified", "timestamp")->build();
    $this->addLifecycleEvent("unsetModified", "preFlush");
}

И сущности, которым требуется modified расширение поля Versionable класс, который определяет метод.

abstract class Versionable extends JsonEncodable {

    protected $modified;

    public function getModified() {
        return $this->modified;
    }

    public function unsetModified(): void {
        $this->modified = null;
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...