Symfony2,Doctrine2,左连接(dql)及其结果

时间:2013-11-21 23:22:54

标签: symfony doctrine-orm dql

所以我们有这样的dql

    $oQuery = $this->createQueryBuilder('assets')
        ->addSelect('flags')
        ->addSelect('types')
        ->addSelect('groups')
        ->leftJoin('Site\MainBundle\Entity\123\invFlags', 'flags', Join::WITH, 'assets.flag = flags.flagID')
        ->leftJoin('Site\MainBundle\Entity\123\invTypes', 'types', Join::WITH, 'assets.typeID = types.typeID')
        ->leftJoin('Site\MainBundle\Entity\123\invGroups', 'groups', Join::WITH, 'types.groupID = groups.groupID');

    if (!empty($aFilter)) {
        $bFirst = true;

        foreach ($aFilter as $sKey => $sValue) {

            if ($bFirst) {
                $oQuery->where($oQuery->expr()->eq('assets.' . $sKey, $sValue));
                $bFirst = false;
                continue;
            } else {
                if ($sValue === null) {
                    $oQuery->andWhere($oQuery->expr()->isNull('assets.' . $sKey));
                }
            }
        }
    }

    return $oQuery->getQuery()->getResult();

我们从存储库调用它并且有结果......但是。在sql查询($ oQuery-> getQuery() - > getSQL())中,我看到了我需要的所有列和正确的左连接,但不是结果。为什么会这样?当我返回' - > getScalarResult()'时,我会收到所有需要的数据,但是像数组一样,并且带有表的前缀

array(38) {
  ["assets_id"]=>string(4) "4558"
  ["assets_characterID"]=>string(8) "90206263"
  ["assets_parentItemID"]=>NULL

无论如何,我可以用所有get方法获得简单的'组合'对象吗?

ADD: 忘了说实体中没有关系。

0 个答案:

没有答案