cba*_*scu 5 symfony doctrine-orm fosuserbundle
我从头开始了一个Symfony2项目,然后安装了FOSUserBundle.
然后,我编写了(实际上,使用ORM Designer生成)一些需要在它们之间以及与User实体之间建立关系的实体.
我Items属于Users,Collections属于Users该组Items,等等.
由于我使用了FOSUserBundle,我只有一个基本的用户类(https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/index.md,步骤3a),使用注释定义,没有config/doctrine文件夹,也没有User.yml文件.
然后我创建了MyBundle/Resources/config/doctrine文件夹并添加了yml上面提到的文件.
当我尝试使用命令行工具生成实体时,一切正常:它将从我的yml文件创建实体.
然而,在这一点上,试图加载在浏览器在登录以前工作时(我只用了网址FOSUserBundle安装)将抛出这个错误:
MappingException:没有为类'X\MyBundle\Entity\User'找到名为'/var/www/concert/src/X/MyBundle/Resources/config/doctrine/User.orm.yml'的映射文件.
只要*.orm.ym文件config/doctrine夹中有l文件,以下操作(例如生成CRUD逻辑)将无法工作.如果我删除它们,CRUD生成将工作,但生成实际的mysql表不会.
玩弄这些让我到了一个点,我也可以得到表,但如果我尝试使用新生成的CRUD所涉及的任何url,那么实际的应用程序不起作用,因为实体基于yml(我删除它以使事情"工作")它将没有任何映射知识.
这本质上是错误的吗?要使基于yml的实体与基于FOSUserBundle的用户实体相关联,并且仍然能够获得漂亮的命令行生成工具?
您描述的问题源于混合配置格式(yaml和我假设注释).您可以通过放弃模型中的注释并使用yaml文件替换它们来轻松解决此问题,就像您在自己的模型中所做的那样.
不幸的是,FOSUserBundle-docs只显示如何使用注释,因此当您的X\MyBundle\Entity\User扩展FOSUSerBundle的UserEntity时,这里是对yaml格式的快速转换:
X\MyBundle\Entity\User:
type: entity
table: fos_user
id:
id:
type: integer
strategy: { generator: "AUTO" }
Run Code Online (Sandbox Code Playgroud)
其余的东西由FOSUserBundle处理,因为BaseModel是一个映射超类,并且已经描述了它中的内容User.orm.xml,但您也可以替换现有值或添加其他值,就像您对自己的模型一样.
如果您不在整个应用程序中使用注释,您可能还需要在您的应用程序中禁用它们app/config/config.yml以防止副作用.
| 归档时间: |
|
| 查看次数: |
3049 次 |
| 最近记录: |