簡體   English   中英

Querybuilder:錯誤:預期的字符串結尾,得到了'('

[英]Querybuilder : Error: Expected end of string, got '('

這是查詢:

public function getTeachersBySchool(School $school)
    {  

        $qb2 = $this->getEntityManager()->createQueryBuilder('UserGroup ug')
                ->select('ug.members')
                ->where('ug.school = :school')
                ->andWhere('ug.name = "teachers"')
                ->setParameter('school', $school)    
                ;

        $qb = $this->getEntityManager()->createQueryBuilder('Project\UserBundle\Entity\User u');

        $query = $qb
                ->select('Project\UserBundle\Entity\User')
                ->where($qb->expr()->in('Project\UserBundle\Entity\User', $qb2->getDQL()))   
            ;

        return $query;
    }

我不明白為什么會收到此錯誤,尤其是所進行的SQL查詢似乎正確:

SELECT Project\UserBundle\Entity\User WHERE Project\UserBundle\Entity\User IN(SELECT ug.members WHERE ug.school = :school AND ug.name = "teachers") 

編輯:我不認為問題出在andWhere('ug.name = "teachers"')因為即使刪除此行,錯誤仍然相同。

嘗試

    $qb2 = $this->getEntityManager()->createQueryBuilder('UserGroup ug')
            ->select('ug.members')
            ->where('ug.name = teachers')
            ->andWhere('ug.school = :school')
            ->setParameter('school', $school)    
            ;

嘗試這個:

        $qb2 = $this->getEntityManager()->createQueryBuilder('UserGroup ug')
            ->select('ug.members')
            ->where('ug.school = :school')
            ->andWhere('ug.name = :teachers')
            ->setParameters([
               'school' => $school,
               'teachers' => "teachers"
            ]);

嘗試這個:

    $qb2 = $this->getEntityManager()->createQueryBuilder()
            ->select('ug.members')
            ->from(UserGroup::class, 'ug')
            ->where('ug.school = :school')
            ->andWhere('ug.name = "teachers"')
            ->setParameter('school', $school);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM