我有实体 1: Upload
,它与comments
有oneToMany
关系
我有一个自定义的上传存储库,我想找到评论最多的上传。
所以当我这样做时
/**
* @param $sortBy String
* @param $limit Int
*/
public function getWeekTopUploads($sortBy,$limit){
$qb = $this->getEntityManager()->createQueryBuilder();
$qb->add('select', 'u')
->add('from', 'TrackerMembersBundle:Upload u')
// ->where('u.created')
->orderBy('u.comments', 'DESC')
->setMaxResults( $limit );
$query = $qb->getQuery();
$result = $query->getResult();
return $result;
}
我收到错误:
[Semantical Error] line 0, col 55 near 'comments DES': Error: Invalid PathExpression. StateFieldPathExpression or SingleValuedAssociationField expected.
500 Internal Server Error - QueryException
似乎不想接受按评论数排序,我该如何解决这个问题,或者查询构建器的正确重写是什么?
你必须将 'u' 作为参数传递给 createQueryBuilder() 函数,并在 UploadRepository 中声明你的 getWeekTopUploads() 函数:
$qb = $this->createQueryBuilder('u');
->where('u.created' >= new DateTime("1 week ago"))
->orderBy('u.comments', 'DESC')
->setMaxResults($limit)
->getQuery()->getResult();
return $qb;