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(),但我有相同的错误更新了答案。我明天会尝试,我会提前告诉您谢谢。这不会解决问题@检查你的答案最后的评论。