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() теперь также устарела. (этого также нет в примечаниях к выпуску)