gpt4 book ai didi

symfony - 使用 FOSUserBundle 与基于 yml 的实体相关

转载 作者:行者123 更新时间:2023-12-02 12:56:46 26 4
gpt4 key购买 nike

我从头开始启动了一个 Symfony2 项目,然后在其中安装了 FOSUserBundle

然后,我编写了(实际上是使用 ORM Designer 生成的)一些需要在它们之间以及与 User 实体之间建立关系的实体。

我有属于UsersItemsCollections属于Users该组Items,等等。

由于我使用了 FOSUserBundle,所以我只有一个使用注释定义的基本 User 类(https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/index.md,步骤 3a),没有 config/doctrine 文件夹,也没有 User.yml文件在其中。

然后,我创建了 MyBundle/Resources/config/doctrine 文件夹并添加了上面提到的 yml 文件。

当我尝试使用命令行工具生成实体时,一切正常:它将从我的 yml 文件创建实体。

但是,此时,尝试在浏览器中加载以前登录的网址(当我只安装了 FOSUserBundle 时)将抛出此错误:

MappingException: No mapping file found named '/var/www/concert/src/X/MyBundle/Resources/config/doctrine/User.orm.yml' for class 'X\MyBundle\Entity\User'.

只要 config/doctrine 文件夹中有 *.orm.yml 文件,以下操作(例如生成 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" }

剩下的事情由 FOSUserBundle 处理,因为 BaseModel 是 mapped-superclass并且已经描述了 User.orm.xml 中的内容,但您也可以替换现有值或添加其他值,就像使用自己的模型一样。

如果您不在整个应用程序中使用注释,您可能还需要在 app/config/config.yml 中禁用它们以防止副作用。

关于symfony - 使用 FOSUserBundle 与基于 yml 的实体相关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14984344/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com