@Arassir
Программист PHP/JS

Как задать значение по умолчанию для сущности DOCTRINE ORM?

Привет

Подскажите, можно ли используя ORM Doctrine установить в качестве значения по умолчанию SQL-выражение?

Нужно чтобы при создании сущности Operation в поле number сохранился результат выполнения sql выражения - CONCAT('T', LPAD(nextval('number_id_seq')::text, 12, '0'))

Что-то вроде такого:

/**
 * @ORM\Entity(repositoryClass=OperationRepository::class)
 * @ORM\HasLifecycleCallbacks()
 */
class Operation {
	/**
	 * @ORM\PrePersist()
	 */
	public function prePersist(): void {
		if (empty($this->number)){
			$this->number = new Expression("CONCAT('T', LPAD(nextval('number_id_seq')::text, 12, '0'))");
		}
		if (empty($this->createdAt)){
			$this->createdAt = new Expression('NOW()');
		}
	}
}
  • Вопрос задан
  • 274 просмотра
Пригласить эксперта
Ответы на вопрос 1
@tukreb
Можно так, через options={"default"="now()"}
/**
     * @ORM\Column(name="date", type="datetime_immutable", nullable=false, options={"default"="now()"})
     */
    private \DateTimeImmutable $date;

Точно работает с now(), более сложного не проверял, но я не вижу причин почему не должно сработать. Правда не факт, кто доктрина сможет правильно сгенерировать миграцию, возможно руками придётся править в миграции.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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