При работе с большим количеством данных важно не использовать слишком много памяти. Сегодня Yii2 обзавёлся решением. Работает за раз не со всеми данными, а частями:
use yii\db\Query; $query = (new Query) ->from('tbl_user') ->orderBy('id'); foreach ($query->each() as $user) { // $user — одна строка из tbl_user } foreach ($query->batch(10) as $users) { // $users — массив из 10 строк }
То же работает с Active Record:
foreach (Customer::find()->batch() as $customers) { // $customers — массив из 10 или менее объектов Customer }