如何使用doctrine和symfony2从数据库视图生成实体

Kos*_*sta 9 symfony doctrine-orm

我正在尝试使用标准控制台命令从数据库生成实体,如Symfony2文档中所述:http://symfony.com/doc/current/cookbook/doctrine/reverse_engineering.html .

php app/console doctrine:mapping:convert --from-database --force yml "src/My/HomeBundle/Resources/config/doctrine/metadata/orm"
php app/console doctrine:mapping:import MyHomeBundle yml
php app/console doctrine:generate:entities MyHomeBundle
Run Code Online (Sandbox Code Playgroud)

在此之后,所有表都正确生成.问题是这不会为数据库视图生成实体.当我自己将yml文件添加到src/My/HomeBundle/Resources/config/doctrine/metadata/orm中时,例如:

UserInGroup:
  type: entity
  table: user_in_group_view
  fields:
    id:
      id: true
      type: integer
      unsigned: false
      nullable: false
      generator:
        strategy: IDENTITY
    userId:
      type: integer
      unsigned: false
      nullable: false
      column: user_id
    userGroupId:
      type: integer
      unsigned: false
      nullable: false
      column: user_group_id
  lifecycleCallbacks: {  }
Run Code Online (Sandbox Code Playgroud)

我在运行时遇到此异常php app/console doctrine:generate:entities MyHomeBundle:

Notice: Undefined index: My\HomeBundle\Entity\UserInGroup in C:\Users\ThisIsMe\Projects\SymfonyTestProject\vendor\doctrine\lib\Doctrine\ORM\Mapping\Driver\AbstractFileDriver.php line 121
Run Code Online (Sandbox Code Playgroud)

类似的问题发布在这里:如何在Symfony 2中为数据库视图设置实体(学说)

我知道我可以创建实体类,但我希望我能够生成这样的内容,所以如果我改变了我的视图,我就可以重新生成实体类.有什么建议?

Asi*_* AP 2

现在您只需创建您的 orm 文件。您还需要执行 2 个步骤。我将为您提供从头开始的完整步骤。

在执行此操作之前,请删除您之前创建的 orm 目录中的所有 yml 文件。

我希望 MyHomeBundle 是您的捆绑包名称

1).php app/console doctrine:mapping:convert yml ./src/My/HomeBundle/Resources/config/doctrine --from-database --force 

  Symfony2 generate entity from Database

 2).php app/console doctrine:mapping:import MyHomeBundle yml

 3).php app/console doctrine:generate:entities MyHomeBundle
Run Code Online (Sandbox Code Playgroud)

希望这对您有帮助。