doctrine query builder Подзапрос (subquery) "SELECT * WHERE value IN (SELECT ...)"
Primary tabs
SELECT column-names FROM table-name1 WHERE value IN (SELECT column-name FROM table-name2 WHERE condition)
Такой подзапрос можно оформить с помощью QueryBuilder-а через expr()->in(). Например, так:
$qb = $this->createQueryBuilder('m'); $result = $qb->where( $qb ->expr()->in( 'm.accountManager', $this->getEntityManager() ->createQueryBuilder() ->select('accountManager.id') ->from(WebbankirManager::class, 'accountManager') ->where('accountManager.id = :authUserId') ->getDQL() ) ) ->setParameter('authUserId', $authUserId) ->getQuery() ->getResult();
Здесь задействуются 2 связанные таблицы: manager ('m') и account_manager ('accountManager'). Связь "один-ко-многим": у одного аккаунт менеджера может быть много менеджеров.
В выборку попадают все менеджеры, аккаунт менеджер которых авторизован (accountManager.id = :authUserId). id авторизованного аккаунт-менеджера передаётся в качестве параметра.
Источники
- Log in to post comments
- 4449 reads