Mic*_*aas 16 doctrine doctrine-query doctrine-orm
我在查询构建器中使用以下代码,以选择平均得分值,以及该平均值所属的类别实体:
$queryBuilder = $this->createQueryBuilder('s')
->resetDQLPart('select')
->select('AVG(s.score) as score, partial c.{reviewCategoryID} as cat')
->setParameter('status', ReviewStatusType::ACCEPTED)
->join('s.review', 'r')
->join('s.category', 'c')
->where('r.campsite = :campsite')
->andWhere('r.status = :status')
->setParameter('campsite', $campsite)
->groupBy('c.reviewCategoryID');
Run Code Online (Sandbox Code Playgroud)
$campsite 是评论所属的实体,而评分属于评论,评分具有类别.
但是当我尝试执行此操作时,我收到错误
Error: Cannot select entity through identification variables without choosing at least one root entity alias.
Run Code Online (Sandbox Code Playgroud)
当我调试并检查根别名时,我看到's'已定义,应该是根实体(Score).
知道什么可能是错的吗?
Fli*_*lip 14
createQueryBuilder()只能在从匹配实体的存储库调用时获取参数.如果您不从此存储库调用它,则应定义from方法.
->from('YourMappingSpace:Campsite', 's')
Run Code Online (Sandbox Code Playgroud)
无论如何,将参数传递给createQueryBuilder()都是为了方便.您始终可以手动定义它.该函数看起来像这样(仅在实体存储库中):
public function createQueryBuilder($alias)
{
return $this->_em->createQueryBuilder()
->select($alias)
->from($this->_entityName, $alias);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
29947 次 |
| 最近记录: |