我创建了这个 sql 方法,但方法 addSelect 有问题
->addSelect("count(rf.id)/($countMyFoods) as HIDDEN orderBy")
我收到这个错误:
[Syntax Error] line 0, col 24: Error: Expected Literal, got 'SELECT'
知道我该如何解决吗?这是我的方法:
public function searchByFoods(array $foods = [])
{
$subQueryBuilder = $this->createQueryBuilder('cr');
$countMyFoods = $subQueryBuilder
->select('count(crf.id)')
->join(
'cr.recipeFoods',
'crf',
Join::WITH,
$subQueryBuilder->expr()->andX(
$subQueryBuilder->expr()->eq('cr', 'r'),
$subQueryBuilder->expr()->eq('cr', 'crf.recipe'),
$subQueryBuilder->expr()->in('crf.food', ':foods'),
)
)
->getDQL();
return $this->createQueryBuilder('r')
->select("r")
->addSelect("count(rf.id)/($countMyFoods) as HIDDEN orderBy")
->join('r.recipeFoods', 'rf')
->setParameter('foods', $foods)
->groupBy('r.id')
->orderBy('orderBy')
->getQuery()
->getResult();
}