代码之家  ›  专栏  ›  技术社区  ›  Zoltán Fekete

原则:来自原始SQL的水合物模型

  •  0
  • Zoltán Fekete  · 技术社区  · 6 年前

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

    当然有 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 回复  |  直到 6 年前
        1
  •  1
  •   Zoltán Fekete    6 年前

    找到了!通过EntityManager的createNativeQuery函数。对于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();