knobli
knobli

Reputation: 657

Doctrine: Expected Lexer::T_MEMBER, got '='

I try to define a function in a repository:

    public function getBestResultForDisciplineAndRiegeFromActives(Discipline $discipline, Riege $riege){
    $qb = $this->_em->createQueryBuilder();
    $qb->select('r')
        ->from('Result', 'r')
        ->leftJoin('r.event', 'event')
        ->leftJoin('event.riegen', 'riege')
        ->leftJoin('r.member', 'member')
        ->leftJoin('member.membershipHistories', 'membershipHistory');
    $qb->where("r.discipline = :discipline");
    $qb->andWhere("riege = :riege");
    $qb->andWhere("membershipHistory.riege = :riege");
    $qb->andWhere("member.active = 1");
    $qb->addOrderBy('r.value', $discipline->getSortOrder());
    $qb->addOrderBy('event.startDate', "ASC");
    $qb->setParameter('discipline', $discipline);
    $qb->setParameter('riege', $riege);
    $query = $qb->getQuery();   
    $query->setMaxResults(1);
    $result = $query->getOneOrNullResult();
    return $result;         
}

But doctrine has a problem with the line "$qb->andWhere("member.active = 1");"

The following error appears:

( ! ) Fatal error: Uncaught exception 'Doctrine\ORM\Query\QueryException' with message
 'SELECT r FROM Result r LEFT JOIN r.event event LEFT JOIN event.riegen riege LEFT JOIN r.member member LEFT JOIN member.membershipHistories membershipHistory WHERE r.discipline = :discipline AND riege = :riege AND membershipHistory.riege = :riege AND member.active = '1' ORDER BY r.value ASC, event.startDate ASC' in 
    C:\TV\xampp\htdocs\tvdb_wetten\vendor\doctrine\orm\lib\Doctrine\ORM\Query\QueryException.php on line 52

( ! ) Doctrine\ORM\Query\QueryException: [Syntax Error] line 0, col 264: Error: Expected Doctrine\ORM\Query\Lexer::T_MEMBER, got '=' in 
  C:\TV\xampp\htdocs\tvdb_wetten\vendor\doctrine\orm\lib\Doctrine\ORM\Query\QueryException.php on line 52

Upvotes: 0

Views: 523

Answers (1)

knobli
knobli

Reputation: 657

It was a failure in the join alias, now it works.

public function getBestResultForDisciplineAndRiegeFromActives(Discipline $discipline, Riege $riege){
    $qb = $this->_em->createQueryBuilder();
    $qb->select('r')
        ->from('Result', 'r')
        ->leftJoin('r.event', 'e')
        ->leftJoin('e.riegen', 'riege')
        ->leftJoin('r.member', 'm')
        ->leftJoin('m.membershipHistories', 'membershipHistory');
    $qb->where("r.discipline = :discipline");
    $qb->andWhere("riege = :riege");
    $qb->andWhere("membershipHistory.riege = :riege");
    $qb->andWhere("m.active = 1");
    $qb->addOrderBy('r.value', $discipline->getSortOrder());
    $qb->addOrderBy('e.startDate', "ASC");
    $qb->setParameter('discipline', $discipline);
    $qb->setParameter('riege', $riege);
    $query = $qb->getQuery();   
    $query->setMaxResults(1);
    $result = $query->getOneOrNullResult();
    return $result;         
}

Upvotes: 2

Related Questions