2015-10-12 28 views
0

我有一個連接查詢在我的「項」實體庫類:主義的QueryBuilder的getResult沒有返回嵌套數組

public function findByParentItem(parentItemCodes, excludedModules) { 
    $qb = $this->getEntityManager()->createQueryBuilder(); 

    $qb->select('i', 'p') 
     ->from('Bundle:ItemParent', 'p') 
     ->join($this->getClassName(), 'i', Join::WITH, 'i.itemCode = p.itemCode') 
     ->where(
      $qb->expr()->andX(
       $qb->expr()->in('p.parentItem', ':parentItem'), 
       $qb->expr()->notIn('i.moduleId', ':excludedModules') 
      ) 
     ) 
     ->setParameter('parentItem', $parentItemCodes) 
     ->setParameter('excludedModules', $excludedModules); 

    return $qb->getQuery()->getResult(); 
} 

項目和ParentItem不由聯想連接,因爲它可能指向另一個實體爲好。

我希望得到的結果是:

[ 
    0 => [ 
     0 => Item, 
     1 => ParentItem 
    ], 
    1 => [ 
     0 => Item, 
     1 => ParentItem 
    ], 
    ... 
] 

相反,我得到:

[ 
    0 => Item, 
    1 => ParentItem, 
    2 => Item, 
    3 => ParentItem, 
    ... 
] 

這是發生是因爲沒有實體的關聯?

編輯:更改->from('Bundle:ParentItem', 'p', 'p.itemCode')給我:

[ 
    'ItemCode1' => ParentItem, 
    0 => Item, 
    'ItemCode2' => ParentItem, 
    1 => Item, 
    ... 
] 

如果我做的:

$qb->select('i', 'p.itemCode as itemCode') 

我得到這個這是比較的行我想要的東西:

[ 
    0 => [ 
     0 => ParentItem, 
     'itemCode' => 'ItemCode1' 
    ], 
    1 => [ 
     0 => ParentItem, 
     'itemCode' => 'ItemCode2' 
    ], 
    ... 
] 

編輯:我的實體:

/** 
* @ORM\Entity(repositoryClass="ItemRepository") 
* @ORM\Table(name="item") 
*/ 
class Item { 

    /** 
    * @ORM\Column(name="item_code", type="string", length=50) 
    * @ORM\Id 
    */ 
    protected $itemCode; 

    /** 
    * @ORM\Column(name="module_id", type="string", length=10, nullable=true) 
    */ 
    protected $moduleId; 

    // .. other properties 
} 

/** 
* @ORM\Entity(repositoryClass="ItemParentRepository") 
* @ORM\Table(name="item_parent") 
*/ 
class ItemParent { 
    /** 
    * @ORM\Column(name="item_code", type="string", length=50) 
    * @ORM\Id 
    */ 
    protected $itemCode; 

    /** 
    * @ORM\Column(name="parent_item", type="string", length=50) 
    * @ORM\Id 
    */ 
    protected $parentItem; 
} 
+0

嘗試用這種'由()'函數:' - 從>( '捆綁:itemParent所', 'P', 'p.itemCode')' – manix

+0

它仍然給平數組,我編輯了我的問題。 – juhah

+0

你應該發佈你的實體以及... –

回答

0
select(array('item as itemObj', 'parentItem as parentItemObj'))