Doctrine DBAL 2.13 $statement-> execute() возвращает bool (вместо Result)

С момента выпуска Doctrine DBAL 2.13 были добавлены устаревшие версии, как указано здесь.

Хотя старый способ получения результатов выглядит примерно так:

      $statement->execute();
while (($row = $statement->fetch()) !== false) {
}

Новый способ выглядит так:

      $result = $statement->execute();
while (($row = $result->fetchAssociative()) !== false) {
}

Я бы хотел обновить свой код, чтобы подготовиться к doctrine / dbal 3.0, но $statement->execute() не возвращает набор результатов, а просто логическое значение, поэтому повторять нечего, даже если в примечаниях к выпуску указано:

DBAL 3.0 извлекает все методы выборки из Statement API и перемещает их в новый Result API, который возвращается из Statement ::execute. Мы перенесли этот API на версию 2.13.

Так значит ли это, что бэкпорт вышел из строя или я что-то упустил?

1 ответ

Обновите doctrine / dbal 2.13.1 (выпущено 4/2021) и используйте:

      $result = $statement->executeQuery();
while (($row = $result->fetchAssociative()) !== false) {
}

Обратите внимание, что executeQuery () следует использовать для получения объекта Result, поскольку функция execute() теперь также устарела. (этого также нет в примечаниях к выпуску)

Другие вопросы по тегам