我有几个没有设置关系的实体。目前我有一个查询: $ qb = $ this-> getEntityManager() - > createQueryBuilder();
$qb->select('post, user')
->from('PostBundle:Post', 'post')
->leftJoin('UserBundle:User', 'user', 'WITH', 'post.createdBy = user.id')
->groupBy('post');
$result = $qb->getQuery()->getResult();
问题在于,通过这种方式,我将帖子和用户作为不同的数组元素。类似的东西:
[
[
'id'=> post.id,
'text' => post.text
],
[
'id'=> user.id,
'name' => user.name
],
[
'id'=> post.id,
'text' => post.text
],
[
'id'=> user.id,
'name' => user.name
],
...
]
如果我将查询的选择更改为:
$ qb-> select('post,user.id')
我得到了
[
[
'id'=> post.id,
'text' => post.text,
'user.id' => user.id,
],
[
'id'=> post.id,
'text' => post.text,
'user.id' => user.id,
],
...
]
但我真正需要的是获取整个用户对象而不是单个字段,所以我的结果看起来像这样:
[
[
'id'=> post.id,
'text' => post.text,
'user' => [
'id' => user.id,
'name' => user.name,
],
[
'id'=> post.id,
'text' => post.text,
'user' => [
'id' => user.id,
'name' => user.name,
],
...
]
我尝试了不同的分组选项但没有成功。我如何实现这一目标?
答案 0 :(得分:0)
您可以在Post存储库类中使用以下查询。将返回PostBundle:作为结果发布对象。要检索用户,请使用$ post-> getUser();
$query = $this->createQueryBuilder('post')
->leftJoin('UserBundle:User', 'user', 'WITH', 'post.createdBy = user.id');
->groupBy('post');
$result = $qb->getQuery()->getResult();