0

我对此查询有滞后:

            $result = $qb->select("p,s,t,w,ph")
                      ->from("Entity\Property", "p")
                      ->innerJoin("p.sub_type","s")
                      ->innerJoin("s.type","t")
                      ->innerJoin("p.web_info","w")
                      ->leftJoin("p.photos","ph")
                      ->where("w.publish_on_trovit > 0")
                      ->andWhere("p.status=0")
                      ->add("orderBy","p.id ASC,ph.display_order ASC")
                      ->setFirstResult($offset)
                      ->setMaxResults($limit)
                      ->getQuery()
                      ->getArrayResult();

问题是整个实体的负载,为了解决滞后,我只需要选择需要的表字段。

但是当我使用“p.id,ph.id”而不是“p,ph”学说 hidration 将结果数组更改为一个平面表,就像一个普通的 sql 连接。

有没有办法像上面查询的结果一样在 parenet->chields 结果集中只加载需要的字段?

谢谢!

4

1 回答 1

0

使用部分解决了树结构的问题:

select("partial p.{id,reference},partial ph.{id,name},partial t.{id,name},partial s.{id,name},partial w.{id}")

var_dump

array
  0 => 
    array
      'id' => int 9
      'reference' => string '9' (length=1)
      'sub_type' => 
        array
          'id' => int 1
          'name' => string 'Padrao' (length=6)
          'type' => 
            array
              ...
      'web_info' => 
        array
          'id' => int 9
      'photos' => 
        array
          empty
  1 => 
    array
      'id' => int 16
      'reference' => string '124793' (length=6)
      'sub_type' => 
        array
          'id' => int 1
          'name' => string 'Padrao' (length=6)
          'type' => 
            array
              ...
      'web_info' => 
        array
          'id' => int 16
      'photos' => 
        array
          empty
于 2012-06-21T20:36:07.033 回答