2017-06-02 85 views
0

我正在使用Symfony 3.2。我有一個名爲Site的實體,其中包含與稱爲Indication的另一個實體的OneToMany關係。 查詢不爲null symfony/doctrine中的OneToMany關係

class Site 
{ 
    /** 
    * @ORM\OneToMany(targetEntity="IhkBundle\Entity\Indication", mappedBy="site") 
    */ 
    private $indications; 
} 

class Indication 
{ 
    /** 
    * @ORM\ManyToOne(targetEntity="IhkBundle\Entity\Site", inversedBy="indications") 
    * @ORM\JoinColumn(name="site_id", referencedColumnName="id") 
    */ 
    private $site; 
} 

我想查詢所有sites其中Indications可用。我只得到一個ArrayCollection,我不知道該怎麼做。

$sites = $repository->findAll(); 
foreach ($sites as $site) { 
    $site->getIndications(); 
} 

我也試過使用queryBuilder,如this answer

$query = $repository->createQueryBuilder('s'); 
$result = $query->where('s.indications IS NOT NULL') 
    ->getQuery() 
    ->getResult(); 

這引發以下錯誤:

[Semantical Error] line 0, col 46 near 'indications IS': Error: Invalid PathExpression. StateFieldPathExpression or SingleValuedAssociationField expected. 

回答

1

看起來這可以通過SQL做一個簡單連接,這樣的事情應該工作來解決:

$query = $repository->createQueryBuilder('s'); 
$result = $query->select('p') 
    ->join('p.indications', 'i') 
    ->getQuery() 
    ->getResult();