所以我有一个User
和Role
实体。用户可以有许多角色。在我的代码中,我有这样的东西:
$role = /* ... create role */;
$user->addRole($role);
在代码的其他地方,我只能访问$user
,所以我想检索以前添加的角色。如果我执行$user->getRoles()
,则会触发延迟加载,我不希望这样。
那么,如何在不触发延迟加载的情况下从ArrayCollection获得新添加的角色呢?
更新
所有这些都发生在同一个请求上,在第二部分中,我只能访问$user对象($role仍在内存中),这是因为一些Stit层(可能是糟糕的设计)。
如果延迟加载被触发,那么您只需通过联合查询来检索用户。
类似于在您的查询中检索用户:
$qb
->addSelect("role");
->innerJoin("user.roles","role")
我认为最好做这个简单的解决方案,而不是因为不好的原因而试图解决问题。