我堅持一個原本很簡單的教義2查詢。我有一個名爲Category的實體,它與自身有一個OneToMany關係(用於父類和子類)。Doctrine2:不能選擇實體通過識別變量而不選擇至少一個根實體別名
/**
* @ORM\ManyToOne(targetEntity="Category", inversedBy="children")
*/
private $parent;
/**
* @ORM\OneToMany(targetEntity="Category", mappedBy="parent")
*/
private $children;
以下查詢
$q = $this->createQueryBuilder('c')
->leftJoin('c.children', 'cc')
->select('c.name as title, cc')
->where('c.parent IS NULL');
失敗,錯誤
而不選擇至少一根實體別名不能選擇通過標識變量實體。
我真的不明白這個問題。如果我省略了->select
部分,則該查詢確實有效並且會給出預期的結果。我已經搜索了論壇,但找不到解決方案,這工作。有沒有人有建議?非常感謝。
無論是您的查詢生成器(最有可能)或您的實體有問題。在這兩個上粘貼更多的代碼。 –
這是所有相關章節。查詢生成器代碼位於存儲庫中。我返回$ q-> getQuery() - > getResult(); 就是這樣。 – Performation
回購中的普通查詢生成器就像$ this-> getEntityManager() - > getRepository('MyBundle:Entity') - > createQueryBuilder('c') –