在propel中,getId()在save()之后返回NULL

时间:2014-05-26 08:25:33

标签: symfony orm propel

我在schema.xml中定义了一些表可以正常工作。它们的模型是在Propel 1.2中生成的。 XML条目如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<database name="..." namespace="..." defaultIdMethod="native">
<table name="book">
    <vendor type="mysql">
        <parameter name="Engine" value="InnoDB"/>
        <parameter name="Charset" value="utf8"/>
    </vendor>
    <column name="id"
            type="bigint"
            required="true"
            primaryKey="true"
            autoIncrement="true"
            />
   ...some other columns here...
</table>
...some other tables...
</database>

现在,我在Propel 1.4中添加以下条目并为其生成模型:

<table name="file">
...vendor...
<column name="id"
        type="bigint"
        required="true"
        primaryKey="true"
        autoIncrement="true"
        />
...other columns...
</table>

问题是在我创建这样的对象并执行$file->save()后,$file->getId()返回NULL。其他模型,如上面提到的Book,就像一个魅力。 另外,我可以看到BaseFile在setId()方法中没有doInsert调用,而BaseBook和其他模型一样。

如果有人解释可能导致此类行为的原因,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

首先,谢谢你 - 你的解决方案帮助了我(:

我的解决方案: 我的架构是在有问题的表在id列上没有主键时构建的。在DB中修复此问题后,我没有在schema.xml中应用更改。只需添加

 primaryKey="true"

在schema.xml的id列中,所以它就像

<column name="id" phpName="Id" type="INTEGER" primaryKey="true" autoIncrement="true" required="true"/>

使用终端重建类。