0

我有一个具有以下 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 的问题。
它会挂在那里吗,那个学说在这个星座上是行不通的?

4

0 回答 0