Я хотел бы создать запрос в моем репозитории, но это немного сложно сделать с помощью метода queryBuilder, поэтому я предпочитаю полный запрос.
$queryBuilder = $this->_em->createQueryBuilder(
"SELECT need_id
FROM notification_need
WHERE user_id <> :user
AND check_date >=
(SELECT check_date
FROM notification_need
WHERE user_id = :user
ORDER BY check_date DESC
LIMIT 1)
AND need_id IN
(SELECT id
FROM option_need
WHERE commande_id IS NULL)
")
->setParameter('user', $userId);
return $queryBuilder->getQuery()->getResult();
Но при выполнении этого запроса выдается ошибка:
[Syntax Error] line 0, col -1: Error: Expected IdentificationVariable | ScalarExpression | AggregateExpression | FunctionDeclaration | PartialObjectExpression | "(" Subselect ")" | CaseExpression, got end of string.






Конструктор запросов в Doctrine предназначен для использования с DQL, а не с простым SQL. Если вы хотите запустить простой SQL, вам нужно взять объект подключения к БД из Entity Manager и вызвать на нем executeQuery:
$conn = $this->_em->getConnection();
$result = $conn->executeQuery(/* your query goes here */);
Если вы хотите использовать параметры, вы можете воспользоваться подготовленными операторами. В этом случае вы можете работать так же, как и с обычными объектами PDO:
$stmt = $conn->prepare('SELECT * FROM some_table WHERE id = :id');
$stmt->bindValue(':id', $someId);
$result = $stmt->fetchAll();