我尝试从预先存在的数据库中的表创建实体:
php bin/console doctrine:mapping:import --force AppBundle yml --filter="someTable"
但是有消息显示:
表someTable没有主键。学说不支持逆向 从没有主键的表格中进行工程设计。
我检查过,在数据库中,有一些表没有任何PK(我不能改变它)。 所以我读了这页:http://symfony.com/doc/current/doctrine/multiple_entity_managers.html ...并在github上尝试了这个解决方案: https://github.com/doctrine/DoctrineBundle/issues/441
我的config.yml是这样的:
doctrine:
dbal:
default_connection: default
connections:
default:
driver: pdo_mysql
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
charset: UTF8
mapping_types:
enum: string
forMapping:
driver: pdo_mysql
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
charset: UTF8
schema_filter: someTable
orm:
auto_generate_proxy_classes: "%kernel.debug%"
naming_strategy: doctrine.orm.naming_strategy.underscore
auto_mapping: true
default_entity_manager: default
entity_managers:
default:
connection: default
mappings:
AppBundle:
type: yml
dir: Resources/config
forMapping:
connection: forMapping
mappings:
AppBundle:
type: yml
dir: Resources/config
但是当我尝试时:
php bin/console doctrine:mapping:import --em=forMapping --filter="someTable" AppBundle yml
我明白了:
[InvalidArgumentException] Doctrine ORM Manager命名为" forMapping"不存在。
清空缓存,但不是。任何帮助表示赞赏。
MC
答案 0 :(得分:1)
抱歉,我对之前的回答进行了嘲讽。 你怎么样尝试这样的命令:
php bin/console doctrine:mapping:import "AppBundle" yml --em=forMapping --filter="someTable"
它有所作为吗?我从命令行看到使用--help,它按顺序显示。
答案 1 :(得分:0)
[已解决]是由于“auto_mapping”造成的。正确的顺序似乎是:
orm:
default_entity_manager: default
entity_managers:
auto_mapping: true
default:
connection: default
mappings:
AppBundle:
type: yml
dir: Resources/config
# See https://github.com/doctrine/DoctrineBundle/issues/441
forMapping:
connection: forMapping
mappings:
AppBundle:
type: yml
dir: Resources/config
它向下一个错误消息更进一步。当我尝试:
php bin / console doctrine:mapping:import“AppBundle”yml --em = forMapping
弹出以下错误消息:
[Symfony的\元器件\调试\异常\ ContextErrorException]
警告:preg_match():分隔符不能是字母数字或反斜杠
好的,让我们看看。 schema_filter错了。正确的代码是:
schema_filter: ~^spip_rubriques$~
我的实体已正确生成。我感谢你们的帮助。
MC
答案 2 :(得分:-1)
中的“forMapping”看起来不正确
orm:
entity_managers:
#problem here
forMapping:
试着找出这里出了什么问题