我有一个具有以下 dcm.xml 定义的实体:
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping
https://raw.github.com/doctrine/doctrine2/master/doctrine-mapping.xsd">
<entity name="Conversation" table="Conversations">
<!-- ID's -->
<id name="_id" column="ID" type="text">
<generator strategy="AUTO" />
</id>
<!-- Fields -->
<field name="_subject" column="Subject" type="string" />
<!-- Associations -->
<one-to-many field="_conversationMembers" mapped-by="_conversation" target-entity="ConversationMember">
<cascade><cascade-persist /></cascade>
</one-to-many>
</entity>
</doctrine-mapping>
此实体的 ID 是 MSSQL 08 唯一标识符。
现在我生成一个新对象并将其刷新到数据库中。
$conversation = new Conversation();
$em = $dbHandler->getEntityManager();
$conversation->setSubject($subject);
$em->persist($conversation);
$em->flush();
现在我发现这篇文章告诉我,在我刷新实体后,应该设置 ID: 获取最后一个插入 id 与学说 2?
如果我尝试这个建议并添加
$conversation->getId();
ID 仍然为 0。
我无法刷新与此相关的其他实体,因为在每次插入时,学说都会尝试将值 0 作为唯一标识符插入指定的外键列中。
当然,这最终会导致 sql server 的错误消息。
有人知道我做错了什么吗?
还是有另一种方法来确定新生成的 ID ?
我知道一些使用 sql-server 和 Doctrine2 的问题。
它会挂在那里吗,那个学说在这个星座上是行不通的?