Доктрина 2 - NativQuery с UNION - PullRequest
1 голос
/ 08 марта 2012

Я хочу получить гидрат UNION результат для объекта.Моя проблема в том, что при UNION у меня нет псевдонима в результате?

public function getDialogHistoryQuery($addr, $page = 1, $count = 10) {
    $count = (int) abs($count);
    $page = max((int) $page, 1);
    $limitStart = (int)($page - 1) * $count;
    $sql = "(SELECT 
              'in' AS direction, ib.id, ib.from_addr AS addr, ib.receive_time AS time, ib.message
            FROM 
              smsd_inbound AS ib 
            WHERE
              ib.from_addr = :addr)
            UNION ALL
            (SELECT 
              'out' AS direction, ob.id, ob.to_addr, ob.log_time, ob.message
            FROM 
              smsd_outbound AS ob 
            WHERE
              ob.to_addr = :addr)
            ORDER BY time
            LIMIT :limitStart, :limitCount";
    $rsm = new \Doctrine\ORM\Query\ResultSetMappingBuilder($this->getRegistry()->getEntityManager());
    $rsm->addRootEntityFromClassMetadata('SkyDiablo\Util\SMSBundle\Entity\SMSDialog', $alias = 'ib'); //dose not work?
    $query = $this->getRegistry()->getEntityManager()->createNativeQuery($sql, $rsm);
    $query->setParameter('addr', (string)$addr);
    $query->setParameter('limitStart', $limitStart);
    $query->setParameter('limitCount', $count);
    return $query;
}

SQL-запрос работает нормально, но в этом сценарии он не дает результатов.Я отладил его и doctrine 2 получил правильный результат, но не могу гидрировать к сущности?Мой "псевдоним" - это просто попытка получить что-либо, но псевдоним не доступен на UNION?

какие-либо советы?

...