Doc Doctrine可以保存保留键的字段吗?

时间:2016-01-11 15:51:20

标签: mysql doctrine-orm

我的表格中也包含“from”,“with”列。当我想坚持下去时,我得到一个例外:

带有消息'SQLSTATE [42000]的

PDOException':语法错误或访问冲突:1064 SQL语法中有错误;查看与您的MySQL服务器版本对应的手册,以便在

中的'from,with,fb_email,fb_id,fb_login_code,fb_hometown,fb_location,fb_tagged_'附近使用正确的语法

我担心“from”和“with”这个名字引起了这个想法吗?

1 个答案:

答案 0 :(得分:1)

正如Quoting Reserved Words所述:

  

由于保留字冲突,有时需要引用列或表名。 Doctrine不会自动引用标识符,因为它会导致比解决方案更多的问题。引用表和列名称需要使用定义中的刻度明确地完成。

     
<?php
/** @Column(name="`number`", type="integer") */
private $number;
     然后,

Doctrine将根据使用的数据库平台在所有SQL语句中引用此列名。

     
    

警告

         

标识符引用不适用于连接列名称或鉴别器列名称,除非您使用自定义QuoteStrategy

  
     

为了更好地控制列引用,在2.3中引入了Doctrine\ORM\Mapping\QuoteStrategy接口。它为每个列,表,别名和其他SQL名称调用。您可以实现QuoteStrategy并通过调用Doctrine\ORM\Configuration#setQuoteStrategy()来设置它。

     

添加了ANSI引用策略,该策略假定任何SQL名称都不需要引用。您可以使用以下代码:

     
<?php
use Doctrine\ORM\Mapping\AnsiQuoteStrategy;

$configuration->setQuoteStrategy(new AnsiQuoteStrategy());