doctrine2从ArrayCollection中获取新添加的元素,而不会触发延迟加载

时间:2016-04-15 09:18:43

标签: doctrine-orm lazy-loading symfony

所以我有一个UserRole实体。用户可以有很多角色。 在我的代码中,我有类似的东西:

$role = /* ... create role */;
$user->addRole($role);

我的代码中的其他地方,我只能访问$user,所以我想要检索之前添加的角色。如果我执行$user->getRoles(),则会触发延迟加载,我不希望这样。

那么如何在不触发延迟加载的情况下从ArrayCollection中获取新添加的角色?

更新

所有这些都发生在同一个请求中,在第二部分我只能访问$ user对象($ role仍在内存中),这是因为某些stict图层(可能是糟糕的设计)。

1 个答案:

答案 0 :(得分:2)

如果触发了延迟加载,则查询您只需通过联合查询检索用户。

就像在查询中检索用户一样:

$qb
->addSelect("role");
->innerJoin("user.roles","role")

我认为做这个简单的解决方案更好,试图解决这个错误的原因。