我的查询生成器有问题,但我不知道该如何解决此错误,请您帮忙?
这是我的问题,我想检索不在调查表中且主题与调查表相同的问题列表。
这是我的代码:
$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为对象,给定数组”。
我该如何解决这个问题?
答案 0 :(得分:-1)
因此,很明显,正如我在评论中和Symfony's documentation-'query_builder'
中所提到的,可以是QueryBuilder
对象,可调用对象或null
。 / p>
通过这种方式,您需要从第二个查询中删除->getQuery()
和->getResult()
。
更新
因此,感谢@msg在评论中的澄清。根据它,您还需要从第一条语句->getQuery()
和->getResult()
中删除,只需在其中添加->getDQL()
它应该可以工作。
答案 1 :(得分:-1)
您可以修改代码
$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()
;