Я хочу получить гидрат 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
?
какие-либо советы?