如何修复 addSelect 子查询?

问题描述 投票:0回答:0

我创建了这个 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();
    }
symfony doctrine-orm
© www.soinside.com 2019 - 2024. All rights reserved.