Doctrine_Connection_Mysql_Exception保存一行学说



我有一个简单的表。图片:

abstract class BaseImages extends Doctrine_Record
{
    public function setTableDefinition()
    {
        $this->setTableName('images');
        $this->hasColumn('id', 'integer', 4, array(
             'type' => 'integer',
             'length' => 4,
             'fixed' => false,
             'unsigned' => false,
             'primary' => true,
             'autoincrement' => true,
             ));
        $this->hasColumn('file', 'string', 45, array(
             'type' => 'string',
             'length' => 45,
             'fixed' => false,
             'unsigned' => false,
             'primary' => false,
             'notnull' => false,
             'autoincrement' => false,
             ));
        $this->hasColumn('order', 'integer', 4, array(
             'type' => 'integer',
             'length' => 4,
             'fixed' => false,
             'unsigned' => false,
             'primary' => false,
             'default' => '0',
             'notnull' => false,
             'autoincrement' => false,
             ));
    }
    public function setUp()
    {
        parent::setUp();
        $this->hasMany('AuthorsHasImages', array(
             'local' => 'id',
             'foreign' => 'images_id'));
        $this->hasMany('Banners', array(
             'local' => 'id',
             'foreign' => 'images_id'));
        $this->hasMany('BooksHasImages', array(
             'local' => 'id',
             'foreign' => 'images_id'));
        $this->hasMany('Collections', array(
             'local' => 'id',
             'foreign' => 'images_id'));
        $this->hasMany('IllustratorsHasImages', array(
             'local' => 'id',
             'foreign' => 'images_id'));
        $this->hasMany('MerchandisingHasImages', array(
             'local' => 'id',
             'foreign' => 'images_id'));
    }
}

当我使用

$image = new Images();
$image->file = $name;
$image->save();

我有以下错误:

致命错误:未捕获异常'Doctrine_Connection_Mysql_Exception' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064你的SQL语法有错误;检查与你的MySQL服务器版本对应的手册,以确定正确的语法,在/Users/maurogadaleta/Sites/org.blackiebooks/php/doctrine/doctrine/Connection.php的第1行' 'order, file) VALUES ('0', 'P8040001.JPG')'附近使用:1082堆栈跟踪:#0/Users/maurogadaleta/Sites/org.blackiebooks/php/doctrine/doctrine/Connection/Statement.php(269):Doctrine_Connection->rethrowException(Object(PDOException), Object(Doctrine_Connection_Statement)) #1/Users/maurogadaleta/Sites/org.blackiebooks/php/doctrine/doctrine/Connection.php(1042): Doctrine_Connection_Statement->execute(Array) #2/Users/maurogadaleta/Sites/org.blackiebooks/php/doctrine/doctrine/Connection.php(687): Doctrine_Connection->exec('INSERT INTO ima…', Array) #3/Users/maurogadaleta/Sites/org.blackiebooks/php/doctrine/doctrine/Connection/UnitOfWork.php(647): Doctrine_ in/Users/maurogadaleta/Sites/org.blackiebooks/php/doctrine/doctrine/Connection.php on line 1082

有人知道为什么我得到这个错误,我能做些什么来解决这个问题吗?

使用标识符引号;

$conn->setAttribute(Doctrine_Core::ATTR_QUOTE_IDENTIFIER, true);

http://www.doctrine-project.org/documentation/manual/1_2/hu/configuration identifier-quoting

似乎Doctrine没有引用列名,order是MySQL关键字。尝试重命名该列(或者如果可能的话,强制Doctrine引用它)。

最新更新