Doctrine ORM:是否可以在同一命令的其他列中使用自动生成的id?

时间:2018-05-04 23:46:04

标签: php database postgresql doctrine-orm doctrine

我有一个表USER,id字段配置如下:

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

我希望firstName列默认为" user12"当id = 12时,或者" user1547"当id = 1547等时

我知道我可以从不同的方式获得相同的结果(例如:在我的"实体"使用getFirstname方法,或者使用第二个更新firstName值的命令等)但是这不是我的观点:我需要在数据库中使用该值,并且必须在与"插入"的那个命令相同的命令上完成。我的新用户

你认为这可能吗?

我想可以在PostgreSql上使用currval使用如下命令:

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

但是学说呢?

1 个答案:

答案 0 :(得分:1)

如果您使用自动生成的值,则在保存之前您不知道新ID,这意味着您无法将您的名称设置为firstIDVALUE

Doctrine与数据库无关,意味着它不能支持一个数据库的专用功能,而只需要使用常用的标准化功能。

所以我现在看到的解决方案很少: