我正在尝试使用下一条命令从数据库导入单个表:
php bin/console doctrine:mapping:import --force InventBundle xml --filter="invent"
但无法正常工作,我收到下一条消息:
表invent2没有主键。主义不支持反向 从没有主键的表进行工程设计。
我无法删除invet2,但是我只需要导入invent表。
有什么主意吗?
编辑: 问题是过滤器的无用等于,并且为filter =“ invet”创建了invent和invent2,但是当使用filter =“ invent2”
时仅创建了invent2。答案 0 :(得分:0)
我和你有同样的问题。 -filter 选项似乎不起作用(在我的情况下,我正在使用多个数据库连接,也许就是这个原因)
这是我解决的方法:
您必须在app/config/config.yml
文件中添加“ schema_filter”。
在这种情况下,Doctrine似乎使用了preg_match,因此您必须使用如下语法来匹配表名:
schema_filter:~^YourTableName$~
注意:如果您使用的是 Symfony4 ,则您感兴趣的文件是config/packages/doctrine.yaml
这是完整的代码段:
// app/config/config.yml
doctrine:
dbal:
driver: pdo_mysql
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
schema_filter: ~^YourTableName$~