两次从Symfony中的不同表中进行选择

问题描述 投票:-1回答:1

我正在尝试使用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'`
php symfony doctrine
1个回答
0
投票

我不确定您想做什么。但是我想您想获得与此问题相关的questionreponse

为此,您需要在这些表之间建立联接。您可以使用例如leftJoin

$query->leftjoin('App\Entity\Reponse','reponse','WITH','reponse.id = question.reponse_id')

请注意,我认为您的问题表中有reponse_id。可以随意将其替换为所需的内容。

为了获得更高的精确度,您可以查看原则文档。https://www.doctrine-project.org/index.html

有很多示例,教程和完整的文档

[已编辑]问题在于数据库中的表问题中没有字段question_id。

© www.soinside.com 2019 - 2024. All rights reserved.