在CustomRepository中执行JOIN"没有关联"

时间:2014-01-22 11:03:12

标签: php sql doctrine-orm dql

您好我在使用自定义查询时遇到了一些麻烦。 我想做的是这个查询:

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,我希望你可以帮助我。

1 个答案:

答案 0 :(得分:0)

DQL使用对象和属性,而不是数据库表和列。

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