Yii модель найти все памяти

Когда я использую findAll() функционировать это retuns массив CActiveRecord objects, но когда я должен сделать экспорт больших данных, это array превышать допустимый memory size,

Например:

$criteria = new CDbCriteria();
$criteria->with = array('relation_a', 'relation_b');
$criteria->condition = "condition_a=:a AND condition_b=:b";
$data = MyModel::model()->findAll($criteria);

Сейчас $data это массив active record,
Могу ли я иметь что-то вроде CDbDataReader получить MyModel по одному?

Спасибо

0

Решение

Насколько я знаю, при работе с CActiveRecord такого не бывает. Даже если бы была такая опция, php все равно нужно было бы где-то хранить ваши объекты, точно так же, как работает CDbDataReader, если только не были использованы небуферизованные запросы (что затем привело бы к нагрузке на ваш сервер базы данных).

Вам нужно либо попытаться уменьшить объем используемой памяти с загруженными объектами (выберите только то, что вам нужно, ленивые отношения загрузки при необходимости), либо придерживаться построителя запросов, чтобы еще больше сократить использование памяти.

0

Другие решения

Вы можете добавить $ критерии-> limit = 100, и тогда у вас не будет больше объема памяти.

0

По вопросам рекламы [email protected]