Doctrine2返回返回错误数据类型的字段

时间:2013-01-24 16:07:11

标签: symfony types doctrine doctrine-orm

我正在开发一个中型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-&gt; findBy()加载一个或多个实体后,我收到一个数据类型错误的实体。我的结果是:

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

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

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

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

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-Entity:https://gist.github.com/715f3881a57cdd8a7d23

1 个答案:

答案 0 :(得分:0)

根据您的评论

  

PS:起初我没有为列OID定义数据类型,所以它是一个   varchar(255)/ string。后来我将数据类型更改为整数,然后   used doctrine:generate:schema命令用来更新中的列   数据库...

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

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

第二步是以自动方式doctrine:generate:entities

生成getter和setter

重要

第三步是,当您想要更改有关架构的内容时,请使用以下命令doctrine:schema:update --force

结束重要

我认为doctrine:generate:schema没有做你期望它做的事情。
尝试使用我在第三步中编写的命令