我正在尝试使用标准控制台命令从数据库生成实体,如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中为数据库视图设置实体(学说)
我知道我可以创建实体类,但我希望我能够生成这样的内容,所以如果我改变了我的视图,我就可以重新生成实体类.有什么建议?
我想获得一个T4模板所在项目的汇编参考.我知道我可以获得项目的路径,例如Host.ResolveAssemblyReference("$(ProjectDir)")
,我可以添加,bin\\debug\\{projectName}.dll
因为我的程序集名称是由项目名称命名的,但情况并非总是如此,我正在创建可重用的模板,所以我需要路径到dll或最优选的是Assembly
实例.我也找到了如何在方法中引用这里Project
所解释的,但那又是什么?GetProjectContainingT4File
有办法搞定吗?
顺便说一句,我需要这个参考来访问特定类型并从中生成一些代码.