如何在Symfony中应用Doctrine元数据更改

时间:2015-12-16 12:47:36

标签: php symfony doctrine

所以我有一个名为" Release"的MySQL数据库表,遗憾的是它恰好是一个保留的关键字。我跑了

<bean class="org.springframework.batch.item.database.IbatisPagingItemReader">
    <property name="queryId" ref="query" />
    <property name="sqlMapClient" ref="sqlMapClient"/>
    <property name="dataSource" ref="datasource"/>
    <property name="pageSize" value="1000"/>
</bean>

<bean class="org.springframework.batch.item.database.IbatisBatchItemWriter">
    <property name="sqlMapClient" ref="sqlMapClient" />
    <property name="statementId" ref="query" />
    <property name="dataSource" ref="datasource"/>
</bean>

现在出现SQL错误:

  

SQLSTATE [42000]:语法错误或访问冲突:1064 SQL语法中有错误;查看与您的MySQL服务器版本对应的手册,以获得正确的语法,以便在附近发布t0 WHERE t0.ReleaseID = 2&#39;在第1行

所以我手动转义了课程php bin/console doctrine:generate:entities AppBundle 中的表名。

AppBundle\Entity\Release

我跑了

/**
 * Release
 *
 * @ORM\Table(name="`Release`", indexes={@ORM\Index(name="FK_ProductID_Release", columns={"ProductID"})})
 * @ORM\Entity
 */
class Release

但我仍然得到同样的错误。还有什么可以通知Doctrine这个变化?

1 个答案:

答案 0 :(得分:0)

我发现了这个问题,这很奇怪。我按照http://symfony.com/doc/current/cookbook/doctrine/reverse_engineering.html的指南进行了操作 使用命令

php bin/console doctrine:mapping:import --force AppBundle xml

生成现有数据库的描述。这在app / src / AppBundle / Resources / config / doctrine中创建了文件,这些文件似乎优先于实体中的Annotations。这应该在文档中提到。

<强>更新 具体来说这部分

php bin/console doctrine:mapping:convert annotation ./src
文档中的

应更改为

php bin/console doctrine:mapping:convert xml ./src