【发布时间】:2014-04-17 18:08:22
【问题描述】:
我在 symfony 上使用这个本机 SQL 查询(这是一个非常糟糕的做法),但我正在努力让它与 DQL 一起运行而不会触发多个错误。
SELECT Image.path, Image.name
FROM Image
LEFT JOIN ImageVoters ON Image.id = ImageVoters.image_id
WHERE ImageVoters.voter_id =1
AND ImageVoters.action = 'favourite'
ORDER BY Image.created_at ASC
这就是我目前所拥有的
public function findMyFavourites()
{
return $this->getEntityManager()
->createQuery('SELECT p.path,p.name
FROM GabrielUploadBundle:Image p
LEFT JOIN GabrielUploadBundle:ImageVoters v
ON p.id = v.image_id
WHERE v.action ="favourite"
ORDER BY p.created_at ASC')
->getResult();
}
由于某种原因它抛出了这个错误
错误:预期的 Doctrine\ORM\Query\Lexer::T_WITH,得到 'ON'
这是有效的查询
$em = $this->getDoctrine()->getManager();
$query = $em->getRepository('GabrielUploadBundle:Image')->createQueryBuilder('p')
->select(array('p.path', 'p.name','p.id','p.upvotes','p.imageowner','p.createdAt','p.updatedAt'))
->leftJoin('GabrielUploadBundle:ImageVoters', 'v', 'WITH', 'p.id = v.image_id')
->where("v.action = 'favourite'")
->andWhere("v.voter_id = 1")
->orderBy('p.createdAt', 'ASC')
->getQuery();
【问题讨论】:
-
您的查询似乎正确,只需将
ON更改为WITH -
已经尝试得到 [Syntax Error] line 0, col 204: Error: Expected Literal, got '"'
标签: sql symfony doctrine-orm dql doctrine-query