首页 > 解决方案 > 具有多对多关系的 Dcotrine QueryBuilder

问题描述

在这个项目中,我想用 Mercure 协议和 Symfony 创建一个聊天,所以我创建了两个实体:可以有很多用户的对话和可以有很多对话的用户实体,我的问题是我不知道如何找到对话由 他 的 用户, 并找到 一个 用户 的 所有 对话.


#../Entity/Conversation.php
class Conversation
{
  // ....

  /**
   * @ORM\ManyToMany(targetEntity=User::class, inversedBy="conversations")
   */
  private $users;
}

#../Entity/User.php
class User
{
  /**
   * @ORM\ManyToMany(targetEntity=Conversation::class, mappedBy="users")
   */
  private $conversations;
  // ...
}

# Repository/ConversationRepository.php
/**
* @param User[] $users 
*/
public function findOneConversationByUsers(array $users): ?Conversation
{
  // Every convesation is defined by his users
  // The main goal is to find a conversation by his users
  $qb =  $this->createQueryBuilder('c');
  // ...
}

/**
* @return Conversation[]
*/
public function findConversationsByUser(User $user): array
{
  // Each user can have many conversations
  // Each conversation can have many users
  // The main goal is to find all convs by the current user.
  qb = $this->createQueryBuilder('c');
  // $qb-> ...
}

你能告诉我我可以完成这两种方法吗?

标签: phpsqldoctrine-ormquery-builder

解决方案


推荐阅读