gpt4 book ai didi

doctrine-orm - Doctrine 2 中的多对多查询

转载 作者:行者123 更新时间:2023-12-04 04:21:12 26 4
gpt4 key购买 nike

我试图弄清楚如何在 Doctrine 2 中进行多对多查询,但我似乎找不到答案。我确切地知道我将如何在直接 SQL 中做到这一点:

      SELECT ma.id,
ma.name
FROM user u
JOIN user_media_area uma ON uma.user_id = u.id
JOIN media_area ma ON uma.media_area_id = ma.id

我将如何用 Doctrine 做同样的事情?

最佳答案

手册中有一些很好的例子:http://docs.doctrine-project.org/projects/doctrine-orm/en/2.1/reference/query-builder.html

在你的情况下,它看起来像:

    // Build query
$em = $this->getEntityManager();
$qb = $em->createQueryBuilder();

$qb->addSelect('user');
$qb->addSelect('mediaArea');

$qb->from('SomeBundle:User','user');

$qb->leftJoin('user.userMediaArea','userMediaArea');
$qb->leftJoin('userMediaArea.mediaArea','mediaArea');

$query = $qb->getQuery();
$users = $query->getResult();
echo $users[0]->getUserMediaArea()->getName();

你没有发布你的实体代码,所以我不得不猜测你是如何定义关系的。如果您在 User 和 MediaArea 之间只有一个简单的 ManyToMany,那么您可以跳过 UserMediaArea 连接。 D2 会搞定的。并且由于您确实只需要 MediaArea 信息,因此我实际上会反转查询并从 MediaArea 中进行选择,因此不需要返回用户信息。但我试图按照您的原始查询进行操作。

关于doctrine-orm - Doctrine 2 中的多对多查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9933520/

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