2014-01-22 24 views
0

您好,我對自定義查詢有點麻煩。 我想要做的就是這個查詢:在CustomRepository中執行JOIN「沒有關聯」

SELECT dp.* FROM `document_piece` dp 
LEFT JOIN document_category dc 
ON dc.id = dp.category_id 
ORDER BY dc.name ; 

我試過至今都在DQL了一些嘗試,但因爲他們沒有工作,我嘗試使用QueryBuilder的。我到目前爲止是這樣的:

$q = $this->_em->createQueryBuilder()->select('p', 'c') 
      ->from('Core\Entity\DocumentPiece', 'p') 
      ->leftJoin('p.category_id', 'c') 
      ->orderBy('c.name', 'ASC'); 

而且我得到這個錯誤[Semantical Error] line 0, col 69 near 'c ORDER BY c.name': Error: Class Core\Entity\DocumentPiece has no association named category_id

這裏的(相關)註釋的文件:

核心\實體\ DocumentPiece

/** 
* @var integer 
* 
* @ORM\Column(name="id", type="integer", nullable=false) 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="NONE") 
*/ 
private $id; 

/** 
* @var \Core\Entity\DocumentCategory 
* 
* @ORM\ID 
* @ORM\GeneratedValue(strategy="NONE") 
* @ORM\OneToOne(targetEntity="Core\Entity\DocumentCategory") 
* @ORM\JoinColumns({ 
* @ORM\JoinColumn(name="category_id", referencedColumnName="id") 
* }) 
*/ 
private $category; 

Core \ Entity \ DocumentCategory

/** 
* @var integer 
* 
* @ORM\Column(name="id", type="integer", nullable=false) 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="IDENTITY") 
*/ 
private $id; 

我希望你能幫我解決這個問題,如果我要麼搞砸了註解或者DQL。

回答

0

DQL使用對象和屬性,而不是數據庫表和列。

->leftJoin('p.category', 'c') // Lose the _id