Symfony 2:LIMIT主义LEFT JOIN

By simon at 2018-02-07 • 0人收藏 • 67人看过

我在Symfony 2.7中有一个关于左派加入主义的问题。 示例代码:

public function test($id, $offset, $limit)
{
    $build = $this->createQueryBuilder('building');
    $build
        ->addSelect('users', 'numbers')
        ->join('building.users', 'users')
        // limit the numbers for 1 result!
        ->leftJoin('building.numbers', 'numbers') // only select 1 result instead of more.
        ->where('building.id = :id')
        ->setParameter('id', $id);

    $paginator = new Paginator($build->getQuery(), $fetchJoinCollection = true);
    $result = $paginator->getQuery()
        ->setFirstResult($offset)
        ->setMaxResults($limit)
        ->getResult();

    return $result;
}
我现在的问题是我们如何能够实施那个 - > leftJoin('building.numbers','numbers')只返回MAX 1结果。 谢谢! 学说orm:2.2.3,Symfony版本:2.7

1 个回复 | 最后更新于 2018-02-07
2018-02-07   #1

如果你真的不在乎什么具体的号码你检索,只想要 得到一个单一的,你可以使用GROUP BY克劳使用列拥有 你的buildings和你的numbers之间的联系。一个基本的 查询生成器允许这样做看起来像这样:

$qb = $this->createQueryBuilder('building')
    ->addSelect('numbers')
    ->leftJoin('building.numbers', 'numbers')
    ->groupBy('numbers.building');
注意:如果你使用默认的水合模式和检索对象,你的 numbers集合将只有一个单一的条目(或没有),即使 现实中还有更多。这可能会产生一些问题,如果你ry 根据那些部分水合的集合执行更新.

登录后方可回帖

Loading...