如何在Doctrine中使用WHERE作为JOINed表的外键?

时间:2017-01-30 14:12:35

标签: join doctrine-orm associations foreign-key-relationship query-builder

我有三个表/实体的结构:User(表users;列idname),Room(表{{1 } {;列roomeid),以及numberRoomUser;列user_roomiduser_id)。

现在,我想检索具有给定room_id的{​​{1}}的所有Room如何在不加入User的情况下执行此操作?

id

所以在SQL中它就像

Room

如何使用$userId = 123; // ... $queryBuilder = $this->entityManager->createQueryBuilder(); $query = $queryBuilder->select('r') ->from(Room::class, 'r') ->join('r.RoomUsers', 'ru') ->where('ru.room_id = :userId') // room_id? ru.Room.id? ->setParameter('userId', $userId) ->getQuery(); $rooms = $query->getResult(Query::HYDRATE_OBJECT); 实现此简单请求?

1 个答案:

答案 0 :(得分:0)

您可以使用MEMBER OFdocs):

$query = $queryBuilder->select('r')
    ->from(Room::class, 'r')
    ->where(':user_id MEMBER OF r.users')
    ->setParameter('user_id', $userId)