通过manyToOne加载的Doctrine实体未初始化

时间:2017-08-02 04:30:11

标签: symfony doctrine

我尝试使用manyToOne加载对象,但变为null

#ConversationMessage.orm.yml:
AppBundle\Entity\ConversationMessage:
    type: entity
    manyToOne:
        user:
            targetEntity: User
            joinColumn:
                name: user
                referencedColumnName: id
        conversation:
            targetEntity: Conversation
            joinColumn:
                name: conversation
                referencedColumnName: id
    table: null
    repositoryClass: AppBundle\Repository\ConversationMessageRepository
    id:
        id:
            type: integer
            id: true
            generator:
                strategy: AUTO
    fields:
        message:
            type: text
        time:
            type: integer
    lifecycleCallbacks: {  }

对话始终设置为数据库条目。但用户对象没有。 两个班都一样吗?

如果UserMessage是User self,则User对象仅出现在ConversionMessage中。所有对象,userID都不是我登录的用户ID,该条目未初始化。

我尝试将fetch方法设置为EAGER,但结果相同。

有人可以帮忙吗?

感谢!

1 个答案:

答案 0 :(得分:0)

很多人试过...... 当我使用时:

{{ dump(conversations) }}

user-Object将所有字段显示为" null"。只有ID设置为正确的值。当用户Object是我的用户对象时,所有字段都设置了我的数据。

但我可以访问

{{ conversations.getUser().getUsername() }}

将显示用户名。一个

{{ dump(conversations) }}

阅读用户名后,将显示所有带有值的字段。

我再次检查并删除了:

{{ conversations.getUser().getUsername() }}

现在用户

{{ dump(conversations) }}

再次" null"。

好的,一切正常,但有人可以解释一下,为什么symfony会像这样工作?

谢谢!