【发布时间】:2022-08-04 17:13:19
【问题描述】:
我正在处理以下情况:
我的 ChatRoom 类包含一组用户:
#[ORM\\ManyToMany(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()));
这将返回正确的聊天室,但在用户数组中,我只会得到我正在搜索的那个,而不是所有存储在数据库中的。
知道如何解决这个问题..?
-
运行
echo $queryBuilder->getQuery()->getSQL();并检查它是否正在生成预期的 SQL 查询。另外,您可以尝试$queryBuilder->setParameter(\'current_user\', [$user]);,但我不确定。 -
它没有生成预期的 SQL 查询。join 和 where 子句如下所示: LEFT JOIN chat_room_user c3_ ON c0_.id = c3_.chat_room_id LEFT JOIN \"user\" u2_ ON u2_.id = c3_.user_id AND (u2_.deleted_at IS NULL) WHERE (u2_.id IN (?)) (其中 c0_ 是我的聊天室表)。 where id 子句应该在多对多关系表上。任何想法如何告诉教义这样做..?