我的表格中也包含“from
”,“with
”列。当我想坚持下去时,我得到一个例外:
PDOException':语法错误或访问冲突:1064 SQL语法中有错误;查看与您的MySQL服务器版本对应的手册,以便在
中的'from,with,fb_email,fb_id,fb_login_code,fb_hometown,fb_location,fb_tagged_'附近使用正确的语法我担心“from
”和“with
”这个名字引起了这个想法吗?
答案 0 :(得分:1)
由于保留字冲突,有时需要引用列或表名。 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());