如何严格使用教义导入过滤器?

时间:2018-08-27 16:16:34

标签: symfony doctrine-orm symfony-3.4

我正在尝试使用下一条命令从数据库导入单个表:

php bin/console doctrine:mapping:import --force InventBundle xml  --filter="invent"

但无法正常工作,我收到下一条消息:

  

表invent2没有主键。主义不支持反向   从没有主键的表进行工程设计。

我无法删除invet2,但是我只需要导入invent表。

有什么主意吗?

编辑: 问题是过滤器的无用等于,并且为filter =“ invet”创建了invent和invent2,但是当使用filter =“ invent2”

时仅创建了invent2。

1 个答案:

答案 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$~