您好我在使用自定义查询时遇到了一些麻烦。 我想做的是这个查询:
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;
核心\实体\ DocumentCategory
/**
* @var integer
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
如果我搞砸了注释或DQL,我希望你可以帮助我。
答案 0 :(得分:0)
DQL使用对象和属性,而不是数据库表和列。
->leftJoin('p.category', 'c') // Lose the _id