gpt4 book ai didi

php - Doctrine 多对多关系

转载 作者:行者123 更新时间:2023-11-29 14:16:30 25 4
gpt4 key购买 nike

我没有为我的问题找出合适的 Doctrine SQL/DQL。

class User{
/**
* Many Users have Many Groups.
* @ORM\ManyToMany(targetEntity="ChatRoom", inversedBy="users")
* @ORM\JoinTable(name="users_chats")
*/
private $chats;
}

class ChatRoom{
/**
* Many Groups have Many Users.
* @ORM\ManyToMany(targetEntity="User", mappedBy="chats")
*/
private $users;
}

问题是考虑到我是“用户 1”,我需要按照以下结构列出聊天室中的所有用户。

聊天室 1:

  • 用户 1
  • 用户 2

聊天室 2:

  • 用户 1
  • 用户 3

聊天室 3:

  • 用户 1
  • 用户 6

聊天室 4:

  • 用户 1
  • 用户 2
  • 用户 3

在第二个查询中,我需要列出所有与我的 ChatRooms 相关但不同于我的用户的不同用户。

  • 用户 2
  • 用户 3
  • 用户 6

谁能帮帮我?

最佳答案

这是您要查找的内容:

$qb = $entityManager->createQueryBuilder();
$results1 = $qb->select('c, u')
->from('ChatRoom', 'c')
->join('c.users', 'u')
->join('c.users', 'u0', 'WITH', 'u0.id = :yourUserId')
->setParameter('yourUserId', $yourUserId)
->getQuery()->getArrayResult();
var_dump($results1);

$qb = $entityManager->createQueryBuilder();
$results2 = $qb->select('DISTINCT(u)')
->from('User', 'u')
->where('u.id != :yourUserId')
->join('u.chats', 'c')
->join('c.users', 'u1', 'WITH', 'u1.id = :yourUserId')
->setParameter('yourUserId', $yourUserId)
->getQuery()->getResult();
var_dump($results2);

关于php - Doctrine 多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47025216/

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