如何在array-result中包含一对多?

时间:2017-01-16 06:44:02

标签: php doctrine-orm query-builder

在Doctrine(Symfony3)中我试图通过数组结果从我的访问记录中获取最小数据:

public function findByNonDeparted($user)
{
    $qb = $this->getEntityManager()->createQueryBuilder();
    $qb
        ->select('v.id,v.status,v.arrivalStatus,v.personId,v.arrivalDate,v.departureDate')
        ->from('MyAccommodationBundle:Visit', 'v')
        ->leftJoin('v.accommodationPeriods','ap')
        ->leftJoin('ap.roomType','r')
        ->leftJoin('r.stayArea','s');

    return $qb->getQuery()->getArrayResult();
}

我如何在select语句中包含“住宿期”?

我尝试了各种各样的事情:

SELECT('v.id, v.status, v.arrivalStatus, v.personId, v.arrivalDate, v.departureDate, ap')

这会出现以下错误:

  

如果不选择至少一个根实体别名,则无法通过标识变量选择实体。

在select语句中添加'v'将解决这个问题,但它将返回'v'的所有值,而不仅仅是我在select-statement中指定的值

所以我试过了:

SELECT('v.id, v.status, v.arrivalStatus, v.personId, v.arrivalDate, v.departureDate, v.accommodationPeriods')

这会出现以下错误:

  

必须是StateFieldPathExpression。

然后我尝试了:

SELECT('v.id, v.status, v.arrivalStatus, v.personId, v.arrivalDate, v.departureDate, IDENTITY(v.accommodationPeriods)')

然后出现新错误:

  

必须是SingleValuedAssociationField。

0 个答案:

没有答案