php - 带有 fetch Eager 的两个字段的 Doctrine 实体
问题描述
我已经为这个问题苦苦挣扎了几天,我找不到任何理由。我有一个用户实体
/**
* @var string
*
* @ORM\Column(name="uuid", type="string", length=255, nullable=false)
*/
private $uuid;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255, nullable=false)
*/
private $name;
/**
* One User has Many Groups.
*
* @ORM\OneToMany(targetEntity="UserGroup", mappedBy="user", cascade={"persist"}, fetch="EAGER")
*/
protected $groups;
/**
* One User has Many Comments.
*
* @ORM\OneToMany(targetEntity="Comment", mappedBy="user_id", fetch="EAGER")
*/
protected $comments;
用户有两个引用的实体:组(通过 Pivot Entity UserGroup)和评论
问题是当我执行查询时,只获得了一个引用的实体内容。在上面的类中,它只会得到“组”。如果我从 $groups 中删除 Fetch Eager,它将收集“评论”。如果我将 $comments 属性放在“组”之上,它将只恢复该用户的“评论”,而不是组。
如果我尝试使用 Fetch Lazy,然后我初始化()属性(“子实体”组或评论),我确实 getSnapshot() 发生同样的事情。
知道为什么会发生这种情况吗?
非常感谢!
解决方案
所以问题是实体的 ID 字段是一个流(二进制)。当学说读取一次流时,它会“清空”流,因此在下一次使用时,ID 没有内容。我通过从备份变量将 ID 值重新设置为实体来解决它
推荐阅读
- arduino - 在使用 SD 卡读取文件时需要帮助
- xml - 如何使用python根据subelem文件删除xml中的元素?
- ios - 如何将数据从集合视图单元传递到新的视图控制器(以编程方式且没有情节提要)?
- css - 如何在保持线条居中的同时对齐线条上方和下方的文本?
- javascript - 如何将带有表单控件的表单组动态添加到表单组
- css - 使用 CSS 显示姓名首字母
- redis-sentinel - 谁重写了slave redis实例的redis配置slaveof?
- java - Firebase 用户 == 一直为空
- cassandra - TestCassandra 中的错误 - 找不到所需的类。...缺少类:com/google/common/util/concurrent/FutureFallback
- ios - 在 Swift 中重写枚举