0

我正在做一个中型 Symfony2 项目。在使用几个学说实体时,我坚持以下“错误”。

我有一个包含 3 个字段的实体:

<entity name="xxx\yyyBundle\Entity\ABTexte" table="ABTexte">
    <id name="Nr" type="integer" />
    <field name="OID" type="integer" />
    <field name="Text" type="string" />
    <many-to-one target-entity="xxx\yyyBundle\Entity\ABKopf" field="ABKopf" inversed-by="ABTexte">
        <join-column name="OID" referenced-column-name="OID" on-delete="CASCADE" />
    </many-to-one>
</entity>

使用 $repo->findBy() 加载一个或多个实体后,我收到一个数据类型错误的实体。我的结果是:

$ABKopf->Nr (int)
$ABKopf->Text (string)
$ABKopf->OID (string)     <===== !!!!!!!!!

对于我的应用程序来说,将此值作为整数获取非常重要。你有什么想法是什么导致了这种行为?

PS:所有值都填充了正确数据类型的数据。例如 OID = 999000

我验证了,当我使用整数列作为外键(多对一关系......)时,原则总是将它作为字符串返回

ABKopf 中的关系:

<entity name="xxx\yyyBundle\Entity\ABKopf" table="ABKopf">
    <id name="OID" column="OID" type="integer" />
    <field name="ABNr" column="ABNr" type="integer" />
    <!-- ... -->
    <one-to-many target-entity="xxx\yyyBundle\Entity\ABTexte" field="ABTexte" mapped-by="ABKopf" />
</entity>

ABTexte-实体:https ://gist.github.com/715f3881a57cdd8a7d23

4

1 回答 1

0

根据您的评论

PS:起初我没有为列 OID 定义数据类型,所以它是一个 varchar(255) / 字符串。后来我将数据类型更改为整数,并使用教义:生成:模式命令来更新数据库中的列...

我将向您解释生成实体的整个“教义过程”。

首先,您编写一个带有一些注解或 yml、xml、ecc 的 PHP 类,它告诉教义如何创建实体、相互链接等等。

第二步是关于以自动化方式生成 getter 和 setterdoctrine:generate:entities

重要的

第三步,当你想改变你的架构时,使用下面的命令doctrine:schema:update --force

结束重要

我想这doctrine:generate:schema不会做你期望它做的事情。
尝试使用我在第三步中编写的命令

于 2013-01-25T08:24:08.360 回答