\IteratorAggregate
\Bitrix\Main\DB\ResultIterator::next использует fetch()
Поэтому можно так:
foreach ($iterator->exec() as $row) {}
@VirtualWhiskers, подскажите по какой причине в ядре такой подход не используется? Я к тому, что стоит ли вместо while ($row = $iterator->fecth) использовать
а почему не используется? через конструктор запроса exec() и вызывается обычно
я про next итератора, а не сам query builder
exec() возвращает Result и его можно "итерировать"
не совсем понял, ну и как это выглядеть будет с постраничкой?
да также точно. Про итератор почитайте
да итераторы много где в битриксе в новом ядре
я не догнал как этот вариант использовать получится в той же админке через \CAdminResult например
так \CAdminResult это не тот Result))) Тот это \Bitrix\Main\DB\ResultIterator
foreach ($iterator->exec() as $row) {}
ну так я и намекнул про постраничку и разные другие примочки... которые какбы реализованы в старом ядре и юзаются на полную катушку до сих пор
нет, ну, конечно, речь про "новое" ядро. Я же сразу предоставил классы с неймспейсом
$result = $main_query->exec(); $result = new CIBlockResult($result); $result->SetUrlTemplates($arParams["DETAIL_URL"]); while($obItem = $result->GetNextElement()) если коротко но я бы еще заглянул в версию битрикса 12.5 или в какой орм появилось, а когда итератор добавили... совместимость тоже нужно иногда думать
Не понял. Это же не итератор
т.е. в конструкторе запросов не сработает ? foreach ($query->exec() as $row)
Может, и используется в новом коде. Надо смотреть.
Обсуждают сегодня