【发布时间】:2014-05-05 04:35:37
【问题描述】:
我有四个实体:OfficialDocument、Media、NMediaStatus 和 NMediaType。我正在尝试翻译此 SQL:
SELECT od.media, od.type, od.status, md.url, nms.name
FROM official_document od
LEFT JOIN media md ON od.media = md.id
LEFT JOIN n_media_status nms ON od.status = nms.id
WHERE od.company = 9
到 Doctrine Query Builder,结果如下:
public function findOfficialDocument($company_id) {
$qb = $this->getEntityManager()->createQueryBuilder();
$qb->select('od.media', 'od.type', 'od.status', 'md.url', 'nms.name', 'nmt.name');
$qb->from('Company\RegisterCompanyBundle\Entity\OfficialDocument', 'od');
$qb->leftJoin('Common\MediaBundle\Entity\Media', 'md', \Doctrine\ORM\Query\Expr\Join::WITH, 'od.media = md.id');
$qb->leftJoin('Common\MediaBundle\Entity\NMediaStatus', 'nms', \Doctrine\ORM\Query\Expr\Join::WITH, 'od.status = nms.id');
$qb->leftJoin('Common\MediaBundle\Entity\NMediaType', 'nmt', \Doctrine\ORM\Query\Expr\Join::WITH, 'od.type = nmt.id');
$qb->where('od.company = ?1');
$qb->setParameter(1, $company_id);
return $qb->getQuery()->getResult();
}
但每当我从控制器调用该函数时,我都会收到此错误:
[语义错误] line 0, col 10 near 'media, od.type,': 错误: 无效的路径表达式。必须是 StateFieldPathExpression。
[1/2] QueryException: SELECT od.media, od.type, od.status, md.url, nms.name, nmt.name FROM Company\RegisterCompanyBundle\Entity\OfficialDocument od LEFT JOIN Common\MediaBundle\Entity\Media md WITH od.media = md.id LEFT JOIN Common\MediaBundle\Entity\NMediaStatus nms WITH od.status = nms.id 左连接 Common\MediaBundle\Entity\NMediaType nmt WITH od.type = nmt.id WHERE od.company = ?1
OfficialDocument 与其他三个实体相关,但由于我不需要这些实体中的reversedBy,所以我认为这是导致错误的原因,或者可能不是,不确定。无论如何,有什么建议或帮助来解决这个问题吗?
PS:如果您需要查看我的实体,我正在使用最新的 Symfony2 和 Doctrine2,它们是:OfficialDocument、Media、NMediaStatus、NMediaType
【问题讨论】:
标签: symfony doctrine-orm doctrine