我想将表从order
更改为shop_order
。首先,我在phpmyadmin中更改表名。
此外我猜想,改变注释就足够了:
/**
* Order
*
* @ORM\Table(name="shop_order")
* @ORM\Entity
*/
class Order { ...
但是在跑步时
php bin/console doctrine:schema:update --dump-sql
它尝试再次创建表:
CREATE TABLE `order` (id INT AUTO_INCREMENT NOT NULL ...
我还需要更改其他文件吗?
答案 0 :(得分:3)
尝试使用force
,如下所示:
php bin/console doctrine:schema:update --force --dump-sql
请删除缓存
如果它不起作用我建议你使用迁移,因为似乎教义不能识别表名的变化:
up(
)和down()
方法的内容,并将其替换为自定义SQL(ALTER TABLE ... RENAME TO ...)。答案 1 :(得分:3)
清除缓存并尝试再次使用phpMyAdmin更改表名。一旦再次order
,则使用doctrine命令:
php bin/console doctrine:schema:update --dump-sql
如果您希望Doctrine执行更改,请同时添加--force
。
同时检查你的Doctrine配置,可能就是在其他地方缓存元数据(例如Memcache)。您可能还需要清除它。
Doctrine缓存三个级别:查询缓存,元数据缓存和结果缓存。您可能需要查看元数据。
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。
查看文档here。
答案 2 :(得分:0)
只需使用数据库管理工具更改名称,相应地更改实体中的名称,清除缓存,您就可以了 - doctrine:schema:update --dump-sql
然后不会导出任何更改。