SQL-запрос доктрина Symfony - PullRequest
       8

SQL-запрос доктрина Symfony

0 голосов
/ 20 декабря 2018

Я хотел бы создать запрос в своем хранилище, но это немного сложно сделать с помощью метода 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();

Но генерируется ошибкапри выполнении этого запроса:

[Синтаксическая ошибка], строка 0, столбец -1: ошибка: ожидаемая идентификационная переменная |Скаляр Экспресс |AggregateExpression |FunctionDeclaration |PartialObjectExpression |"(" Подвыбрать ")" |CaseExpression, получил конец строки.

1 Ответ

0 голосов
/ 20 декабря 2018

Query Builder в 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();
...