Symfony2:获取持久化对象的 id

Posted

技术标签:

【中文标题】Symfony2:获取持久化对象的 id【英文标题】:Symfony2: get the id of the persisted object 【发布时间】:2012-10-08 18:34:56 【问题描述】:

我有两个实体:用户和个人。

在实体用户中,我需要关联人的 id:user_id。

当我创建新用户时,我必须先创建人,然后再创建用户。 在用户中,我必须输入相应人员的 id,为此我需要获取持久对象 person 的 id,这是一个自动增量。

是否可以通过以下方式获取对象的id:

$em->persist($person);
$em->flush();

我该怎么做?

另一种方法是在 Person 表中搜索最大的 id 并取这个,但我认为应该有一种更好、更简单的方法来获取持久对象的 id。

php为例,当我执行时

$articleID = $_DB->queryRaw((....);

我得到这样的 id。

【问题讨论】:

【参考方案1】:

Symfony2 with Doctrine默认ORM会在数据存入数据库后自动生成一个ID。所以你可以通过->getId()调用ID

$id = $person->getId();

【讨论】:

谢谢@HHabibillah,这行得通。唯一的一点:php中没有var,只有$id = $person->getId();如果您可以对此进行编辑,我会接受您的回答。 感谢您的指正。我已经编辑为正确的语法。 谢谢,我会在 1 小时内接受答案,我现在有发射休息时间。 你好@Habibillah,如果我只使用 $em->persist($person); 我可以使用 getId() 获取 id; ?我还没有使用flush方法,但我想要$person实体对象的id(对于这个例子:)) @AshishShah 是的,但请尝试一下自己

以上是关于Symfony2:获取持久化对象的 id的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Symfony2 中单向持久化一对一实体

jpa持久化对象四种状态

Symfony2/Doctrine:如何从实体类中持久化一个实体?

如何在 symfony2 中持久化之前设置列值?

休眠持久化实体而不获取关联对象。仅凭身份证

在会话中存储对象 Symfony 2