如何在Symfony 3/Doctrine中重命名桌子



我想将表从 order更改为 shop_order。首先,我在phpmyadmin中更改表名。

我会猜到,更改注释就足够了:

/**
 * Order
 *
 * @ORMTable(name="shop_order")
 * @ORMEntity
 */
class Order { ...

但是运行时

php bin/console doctrine:schema:update --dump-sql

它试图再次创建表:

CREATE TABLE `order` (id INT AUTO_INCREMENT NOT NULL ...

我还有其他文件需要更改吗?

清除缓存,然后再次使用phpmyadmin重新更改表名。一旦再次为 order,请使用学说命令:

php bin/console doctrine:schema:update --dump-sql

如果您希望学说执行更改,请添加--force

还检查您的学说配置,可能是在其他地方缓存元数据(例如memcache)。您可能还需要清除这一点。

在三个级别上的教义缓存:查询缓存,元数据缓存和结果缓存。您可能想看看元数据。

doctrine:
    orm:
        auto_mapping: true
        # each caching driver type defines its own config options
        metadata_cache_driver: apc
        result_cache_driver:
            type: memcache
            host: localhost
            port: 11211
            instance_class: Memcache
        # the 'service' type requires to define the 'id' option too
        query_cache_driver:
            type: service
            id: my_doctrine_common_cache_service

所以,如果例如,如果您的设置为memcache,那么您也必须重置memcache。

在这里查看文档。

尝试使用 force,如这样:

php bin/console doctrine:schema:update --force --dump-sql

并删除缓存,请


如果它不起作用,我建议您使用迁移,因为看来Tha学说无法识别表名称的更改:

  • 生成一个新的迁移。
  • 擦除up()和down()方法的内容,然后用自定义SQL替换它们(Alter Table ...重命名为...)。

迁移文档

只需使用DB管理工具更改名称,相应地更改"实体"中的名称,清晰的缓存,您可以使用-doctrine:schema:update --dump-sql然后不更改。

相关内容

  • 没有找到相关文章

最新更新