我正在尝试使用createQueryBuilder从两个不同的表(也称为“问题”和“响应”)返回两列(“问题”和“响应”)。当我返回一列时,我没有问题,但是当我尝试添加新的选择选项时,它不起作用。
我的控制器正确呈现了我的视图和数据:
public function play(Request $request) {
$id = $request->query->get('id');
$cat = $this->repository->findIdQuestion($id);
return $this->render('quiz_select.html.twig', [
'question' => $cat
]);
这是我的问题存储库,当我删除'addSelect'时可以使用
我该怎么办?
public function findIdQuestion($id) {
return $this->createQueryBuilder('question')
->addSelect('reponse')
->from('App\Entity\Reponse', 'reponse')
->where('question.id_categorie = :id')
->setParameter('id', $id)
->getQuery()
->getResult();
}
我收到该错误:
`An exception occurred while executing 'SELECT q0_.id AS id_0, q0_.id_categorie AS id_categorie_1, q0_.question AS question_2, r1_.id AS id_3, r1_.id_question AS id_question_4, r1_.reponse AS reponse_5, r1_.reponse_expected AS reponse_expected_6, r1_.question_id AS question_id_7 FROM question q0_, reponse r1_ WHERE q0_.id_categorie = ?' with params ["2"]:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'r1_.question_id' in 'field list'`
我不确定您想做什么。但是我想您想获得与此问题相关的question和reponse。
为此,您需要在这些表之间建立联接。您可以使用例如leftJoin
$query->leftjoin('App\Entity\Reponse','reponse','WITH','reponse.id = question.reponse_id')
请注意,我认为您的问题表中有reponse_id。可以随意将其替换为所需的内容。
为了获得更高的精确度,您可以查看原则文档。https://www.doctrine-project.org/index.html
有很多示例,教程和完整的文档
[已编辑]问题在于数据库中的表问题中没有字段question_id。