Доктрина ORM: возможно ли использовать автоматически сгенерированный идентификатор в другом столбце той же команды? - PullRequest
0 голосов
/ 05 мая 2018

У меня есть таблица USER, с полем id, настроенным так:

* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")

Я бы хотел, чтобы столбец firstName по умолчанию был бы "user12", когда id = 12, или "user1547", когда id = 1547 и т. Д.

Я знаю, что могу получить тот же результат другим способом (например, в моем "Сущности" с помощью метода getFirstname или со второй командой, которая обновляет значение firstName и т. Д.), Но это не моя точка зрения: мне нужно это значение в базе данных, и оно должно быть сделано по той же команде, что и «вставить» моего нового пользователя.

Как вы думаете, это возможно?

Я полагаю, что это возможно с currval на PostgreSql с такой командой:

INSERT INTO user (id, firstname, lastname) values (nextval('user_id_seq'), ('user' || currval('tmp_play_id_seq')::text), 'Smith'); 

Но как насчет Доктрины? ?

1 Ответ

0 голосов
/ 05 мая 2018

Если вы используете автоматически сгенерированное значение, вы не знаете новый идентификатор, прежде чем сохранить его, что означает, что вы не можете установить свое имя на firstIDVALUE.

Doctrine не зависит от базы данных, означает, что она не может поддерживать специализированные функции одной базы данных над другой, и ей нужно просто использовать общие стандартизированные функции.

Итак, я вижу несколько решений:

...