Symfony表单查询生成器

Symfony表单查询生成器,symfony,symfony-forms,query-builder,Symfony,Symfony Forms,Query Builder,我的查询生成器有问题,但我不知道如何修复此错误。您能帮我吗 这是我的问题,我想检索问卷中没有的问题列表,这些问题与我的问卷主题相同 这是我的密码: $builder ->add('orderQuestion') ->add('idQuestion', EntityType::class, [ 'class' => Question::class, 'query_builder' =>

我的查询生成器有问题,但我不知道如何修复此错误。您能帮我吗

这是我的问题,我想检索问卷中没有的问题列表,这些问题与我的问卷主题相同

这是我的密码:

    $builder
        ->add('orderQuestion')
        ->add('idQuestion', EntityType::class, [
            'class' => Question::class,
            'query_builder' => function(EntityRepository $er) use ($idTheme, $idQuestionnaire){
                $resultatQuestion = $er->createQueryBuilder('questionn')
                    ->select('questionn.id')
                    ->innerJoin('App\Entity\SurveyQuestion', 'surveyQuestion', 'WITH', 'questionn.id = surveyQuestion.idQuestion')
                    ->where('surveyQuestion.idSurvey = :idSurvey')
                ;

                $resultat = $er->createQueryBuilder('q')
                    ->leftJoin('q.surveyQuestions', 'sQ')
                    ->leftJoin('sQ.idSurvey', 's')
                    ->where('q.idTheme = :idTheme')->setParameter('idTheme', $idTheme)->setParameter(':idSurvey', $idQuestionnaire)
                    ->andWhere($er->createQueryBuilder('question')->expr()->notIn('q.id', $resultatQuestion->getDQL()))
                    ;

                return $resultat;
            },
            'choice_label' => function ($question) {
                return $question->getLabel();
            },
        ])
    ;
但是,使用这段代码时,会出现以下错误:“警告:get_class()希望参数1是对象,数组给定”


如何解决这个问题?

因此,要清楚,正如我在评论和-
中提到的“查询生成器”
可以是
QueryBuilder
对象、可调用对象或
null

这样,您需要从第二个查询中删除
->getQuery()
->getResult()

更新

因此,感谢评论中的澄清。根据它,您还需要从第一条语句中删除
->getQuery()
->getResult()
,然后在那里添加
->getDQL()


它应该可以工作。

你能修改你的代码吗

$resultat = $er->createQueryBuilder('q')
                    ->leftJoin('q.surveyQuestions', 'sQ')
                    ->leftJoin('sQ.idSurvey', 's')
                    ->where('q.idTheme = :val')
                    ->andWhere('q.id NOT IN ' . $test)
                    ->setParameter('val', $idTheme)
                    ->getQuery()
                    ->getResult()
                    ;

您是否尝试在上一次查询中删除
->getQuery()->getResult()
?您需要返回一个
QueryBuilder
对象。不是查询的结果。是的,我尝试了这个,但是我出错了,因为我的第一个请求返回了一个数组,但是我需要第二个请求的信息。我说的是你的第二个请求,不是第一个请求。错误不是关于您的第一个查询,而是关于您返回的值。在第一次查询中,您似乎只需要获取ID。是的,这正是我需要的,可能会有所帮助。好的,我删除->getQuery()->getResult(),但我有相同的错误更新了答案。我明天会尝试,我会提前告诉您谢谢。这不会解决问题@检查你的答案最后的评论。