Symfony 2:限制学说左JOIN



我有一个关于在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'(仅返回最大1结果。

谢谢!

学说ORM:2.2.3,Symfony版本:2.7

如果您不在乎您检索到哪个特定号码,而只想获得单个数字,则可以使用buildingsnumbers之间拥有关联的列使用GROUP BY子句。一个基本的查询构建器允许这样做,看起来像这样:

$qb = $this->createQueryBuilder('building')
    ->addSelect('numbers')
    ->leftJoin('building.numbers', 'numbers')
    ->groupBy('numbers.building');

注意:如果您使用默认的水合模式并检索对象,即使实际上还有更多内容,您的numbers收集也只有一个条目(或无(。如果您尝试根据那些部分水合的集合执行更新,这可能会产生一些问题。

相关内容

  • 没有找到相关文章

最新更新