gpt4 book ai didi

mysql - 如何在 Symfony 和 Doctrine 中连接两个实体?

转载 作者:行者123 更新时间:2023-11-29 20:01:58 25 4
gpt4 key购买 nike

我有一个选择查询,我正在尝试向其添加联接。

在下面的示例中,我有一个 Question 实体,用于返回一些结果,并且我想添加与 User 实体的联接,例如:

从问题中选择问题 AS q LEFT JOIN USER u ON q.user_id= u.id;

我希望结果是 Question 实体内的 User 实体,例如:

private Question (entity)
private id
private user_id
private User (entity)
private id
private name

这是我的课

namespace AppBundle\Repository;

use AppBundle\Entity\User;
use AppBundle\Entity\Question;
use Doctrine\ORM\EntityRepository;
use Doctrine\ORM\Tools\Pagination\Paginator;

class QuestionRepository extends EntityRepository
{

/**
* @param int $currentPage
*
* @return Paginator
*/
public function getQuestions($currentPage = 1)
{
$questions = $this->createQueryBuilder('question')
->where('question.active is NULL')
->getQuery();

$paginator = $this->paginate($questions, $currentPage);

return $paginator;
}
}

我这样调用它

$questionRepo = $this->container->get('doctrine')->getManager()->getRepository('AppBundle:Question');
$questions = $questionRepo->getQuestions(1);

有什么想法吗?

最佳答案

怎么样:

$questions = $this->createQueryBuilder('question')
->leftJoin('question.user', 'question_user', 'WITH', 'question_user.user = :user_id')
->where('question.active is NULL')
->setParameter('user_id', $user_id)
->getQuery();

$paginator = $this->paginate($questions, $currentPage);
<小时/>

编辑:由于您的最新评论,我不得不提一下,该建议假设您的 Question 实体如下所示(根据 User 的实体:

/**
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\User", inversedBy="question")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
*/
private $user;

如果没有,请添加此内容,生成实体(php app/consoledoctrine:generate:entities AppBundle:Question)并更新数据库(phpapp/consoledoctrine:schema:update --力)。

PS:在生成实体之前,您必须删除旧的 getter/setter。

关于mysql - 如何在 Symfony 和 Doctrine 中连接两个实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40494599/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com