0
У меня есть структура из трех таблиц/сущностей: User
(таблица users
; столбцы id
и name
), Room
(таблица roome
; столбцы id
и number
) и RoomUser
(user_room
; столбцы id
, user_id
, room_id
).Как использовать WHERE для внешнего ключа таблицы JOINed в Doctrine?
Теперь я хочу получить все Room
s для User
с данным id
. Как это сделать без участия Room
s?
$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);
Таким образом, в SQL было бы что-то вроде
SELECT *
FROM rooms
JOIN room_users ON room_users.room_id = rooms.id
WHERE user_id = 123;
Как реализовать этот простой запрос с QueryBuilder
?
ли мой ответ вам помог? Если да, примите мой ответ. Если нет, сообщите мне (и сообществу). –