推进和Symfony2 - 自动增量字段中的NULL

时间:2014-03-03 12:03:47

标签: php symfony primary-key auto-increment propel

我在使用Propel将新数据插入表格时遇到问题。假设表名为my_tables,这是其Resources \ config \ schema.xml的一部分:

<table name="my_tables" phpName="MyTable">
   <column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true"/>
   ...

代码执行此操作:

$objMyTable = new MyTable();
$objMyTable->setSomeColumn('SomeValue')
        ->setOtherColumn('OtherValue')
        ->save();

我希望生成这样的东西:

INSERT INTO my_tables ('id', 'some_column', 'other_column') VALUES (123, 'SomeValue', 'OtherValue');

其中123将生成自动递增id,但我总是得到NULL而不是123值,因此报告错误。显然,自动增量不适用于此字段。任何想法我错在哪里?

BTW,表本身是在mysql数据库中设置的,所以它确实有自动增量ID,但显然PHP部分生成了错误的SQL。


作为对注释中问题的回答 - 没有对此表的propel生成的基类进行自定义。我没有这个表的额外实体类,而Model / map / MyTableTableMap的例子(忽略TableTable部分,它只是一个示例名称)如下:

 public function initialize()
    {
        // attributes
        $this->setName('my_tables');
        $this->setPhpName('MyTable');
        $this->setClassname('Bundle\\Model\\MyTable');
        $this->setPackage('src.Bundle.Model');
        $this->setUseIdGenerator(true);
        // columns
        $this->addPrimaryKey('id', 'Id', 'INTEGER', true, null, null);
        $this->addColumn(...);
... // other addColumn() calls

     // validators
    } // initialize()

在意识到错误地指责Propel之后,这个问题已经不再有效了。有一个数据问题,并且没有引起它的唯一索引。

0 个答案:

没有答案