按照symfony的文档从现有数据库创建实体,运行第一个命令时出错:
php bin/console doctrine:mapping:import --force AppBundle yml
错误是:
[Symfony\Component\Debug\Exception\ContextErrorException]
Warning: file_put_contents(C:\WebApp\src\AppBundle/Resources/config/doctrine/"user".orm.yml): failed to open stream: Invalid argument
我该如何解决?
答案 0 :(得分:0)
php bin/console doctrine:mapping:import --force AppBundle yml
更改为
php bin/console doctrine:mapping:import AppBundle yml --force
更多详情:
doctrine:mapping:import命令导入映射信息 来自现有数据库:
php app/console doctrine:mapping:import "MyCustomBundle" xml
您还可以选择指定要从中导入的实体管理器 --em选项:
php app/console doctrine:mapping:import "MyCustomBundle" xml --em=default
如果您不想映射可在数据库中找到的每个实体,请使用 - 过滤选项。它将尝试将目标映射实体与 提供了模式字符串。
php app/console doctrine:mapping:import "MyCustomBundle" xml --filter=MyMatchedEntity
如果要覆盖现有映射文件,请使用--force选项:
php app/console doctrine:mapping:import "MyCustomBundle" xml --force
答案 1 :(得分:0)
看起来User是Oracle数据库中的保留字,因此当我创建表时,Oracle创建了一个名为“user”的表,其中包含双引号。因此,当尝试生成实体时,doctrine无法找到表用户,并在其中找到带有双引号的无效参数“user”。我解决问题的方法是使用除用户之外的其他名称。
希望这有助于未来的人。