检查一个数组是否包含一个元素,只返回一个带有原则查询生成器中搜索到的元素的数组



我正在处理以下情况:

我有一个类聊天室包含一个用户数组:

#[ORMManyToMany(targetEntity: User::class)]
#[Groups([ChatRoom::GROUP_GET])]
private iterable $users;

我添加了一个扩展,它应该添加到收集操作查询中,如下所示:

$queryBuilder
->leftJoin("$rootAlias.users", 'us')
->andWhere('us IN (:current_user)')
->setParameter('current_user', array($user->getId()));

这将返回正确的聊天室,但在Users数组中,我只会得到我正在搜索的一个,而不是存储在数据库中的所有聊天室。

你知道怎么解决这个问题吗。。?

我不清楚你想做什么。

如果你需要获取当前聊天室的所有用户,那么如果你有多对多聊天室用户关系,就不需要扩展。你已经有了。

如果你需要获取用户的所有聊天室,你需要用户聊天室关系(通过相同的chat_rooms_users表(。

有了这些关系,您可以调用getChatRooms((&getUsers((方法。所有这些功能都可以通过标准条令关系获得。