Php 在函数addSelect()中如何正确使用sql JOIN和ON语句

Php 在函数addSelect()中如何正确使用sql JOIN和ON语句,php,sql,symfony,doctrine,dql,Php,Sql,Symfony,Doctrine,Dql,上面的查询可以工作,但是如果我删除$dql->addSelect(…函数)上的注释,它会抛出以下错误错误:预期的条令\ORM\Query\Lexer::T\u CLOSE\u括号,got'on'(500内部服务器错误)。我需要知道我做错了什么,以及可能的工作方式。谢谢。SQL查询需要一个select子句。为什么要删除对addSelect()?@TimBiegeleisen select的调用?查询中已经有了它。只需使用addSelect()要在单个查询中获取额外数据,在条令中没有ON,因为条令知

上面的查询可以工作,但是如果我删除
$dql->addSelect(…
函数)上的注释,它会抛出以下错误
错误:预期的条令\ORM\Query\Lexer::T\u CLOSE\u括号,got'on'(500内部服务器错误)
。我需要知道我做错了什么,以及可能的工作方式。谢谢。

SQL查询需要一个select子句。为什么要删除对
addSelect()
?@TimBiegeleisen select的调用?查询中已经有了它。只需使用addSelect()要在单个查询中获取额外数据,在条令中没有ON,因为条令知道如何连接表。尝试使用@FrankB Thank。不久前我发现我只需要删除ON,只使用属性名;
 public function calculateCandidatesExamScores($examIRI, $groupIRI, int $page =1)
    {
        $firstResult = ($page -1 ) * self::ITEMS_PER_PAGE;

        $dql = $this->createQueryBuilder('examlog');
        $dql->join('examlog.examQuestion', 'question');
        $dql->join('question.tblQuestionOptions', 'option');
        $dql->join('examlog.examUser', 'examRegister');
        $dql->join('examRegister.userGroup', 'group');
        $dql->join('examRegister.user', 'candidate');
        $dql->select('count(examlog.id) totalQuestions, candidate.firstname firstname, candidate.regNumber applicant_ref');
//        $dql->addSelect('(SELECT SUM(q.marks) FROM App\Core\Domain\Entity\TblExamUserLogs logs JOIN App\Core\Domain\Entity\TblQuestions q ON logs.examQuestion = q.id JOIN App\Core\Domain\Entity\TblQuestionOptions op ON q.tblQuestionOptions = op.id WHERE logs.answerText = op.answer) AS score');
        $dql->andWhere('examRegister.exam = :exam AND examRegister.userGroup = :group');
        $dql->setParameter('exam', $examIRI);
        $dql->setParameter('group', $groupIRI);
        $dql->addGroupBy('candidate.firstname, candidate.regNumber');
//        $dql->addOrderBy('score', 'DESC');
        $query = $dql->getQuery()
            ->setFirstResult($firstResult)
            ->setMaxResults(self::ITEMS_PER_PAGE);

        $doctrinePaginator = new DoctrinePaginator($query, $fetchJoinCollection = true);


        return ['totalResults'=> $doctrinePaginator->count(), 'results'=>$doctrinePaginator->getQuery()->getResult()];

    }