Доктрина: модели Hydrate из необработанного SQL - PullRequest
0 голосов
/ 02 сентября 2018

У меня есть следующий пользовательский запрос. Я знаю, что он простой, поэтому его также можно использовать как DQL, но у меня есть и более сложные. Но я хочу знать, как это сделать, даже с более сложными запросами.

select j.*
from `shop`.`jobs` j
-- 2 joins
where j.`active` = true 
order by j.`priority` desc, j.`created` asc 

Конечно, есть Job модель.

Что я хочу:

Массив экземпляров из класса Job, использующий необработанный sql. Как это:

array (6) {
    [0] => Job#12 (8) {
      ...
    }
    [1] => Job#13 (8) {
      ...
    }
    [2] => Job#14 (8) {
      ...
    }
    [3] => Job#16 (8) {
      ...
    }
    [4] => Job#17 (8) {
      ...
    }
    [5] => Job#18 (8( {
      ...
    }
}

1 Ответ

0 голосов
/ 03 сентября 2018

Нашли это! Через функцию createNativeQuery EntityManager. А для RSM мне нужно использовать класс ResultSetMappingBuilder.

$rsm = new \Doctrine\ORM\Query\ResultSetMappingBuilder($this->getEntitiyManager());
$rsm->addRootEntityFromClassMetadata(\Path\To\Model::class, 'alias');

$nativeQuery = $this->getEntitiyManager()->createNativeQuery('-- query--', $rsm);

$nativeQuery->getResult();
...