【问题标题】:Symfony2 FosUserBundle is not hydrating User Entity with custom EntitySymfony2 FosUserBundle 没有使用自定义实体来补充用户实体
【发布时间】:2015-02-22 08:33:09
【问题描述】:

我有自己的用户实体,它扩展了 Fos 之一。它能够以多对一关系的形式附加另一个实体。

在我自己的配置文件控制器中使用以下代码会导致此实体未添加到用户实体中。

$user = $repo->find($user->getId());

我的所有其他自定义字段都已到位,只是缺少这个实体。关系是这样的

manyToOne:
    game_system:
        targetEntity: Acme\NameofBundle\Entity\GameSystem
        joinColumn:
            onDelete: SET NULL
            name: game_system_id
            referencedColumnName: id

编辑

值得注意的是,getGameSystem 调用在我的主包 NameofBundle 中工作。

但它在 MemberBundle 内部失败,MemberBundle 扩展了 FOSUserBundle。 GameSystem 实体在 NameofBundle 内,而我的 User 是我的 MemberBundle。

编辑 2

我的 config.yml

fos_user:
    db_driver: orm
    firewall_name: main
    user_class: Acme\MemberBundle\Entity\User
    group:
        group_class: Acme\MemberBundle\Entity\User

【问题讨论】:

  • 你是如何设置关系的?
  • YML 已经在问题中了?
  • 那是映射,是的,但是你在哪里 setGameSystem() ?
  • 它已经设置并且在数据库中。如果我在自己的控制器中进行相同的调用,那很好。它只在我的 FOS 控制器中失败
  • @johnSmith 查看我对捆绑包如何拆分的编辑

标签: symfony doctrine-orm fosuserbundle


【解决方案1】:

这行好像有问题:

$user = $repo->find($user->getId());

这似乎是多余的 如果您还没有从数据库中获取用户,您如何从用户中获取 ID? 或者,如果您已经有用户对象,则不需要从数据库中获取它。 以下会更正确,并且要获得您想要的 id,您必须使用 findAll() 创建一个列表。

$user = $repo->find($id);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-30
    相关资源
    最近更新 更多