我在Yii Framework上有一个网站,我想在一个表中搜索匹配的单词。
我不断得到"out of memory"
(这是一个大表)。
我尝试了这段代码,但它一直在加载页面
$dataProvider = new CActiveDataProvider('Data');
$iterator = new CDataProviderIterator($dataProvider);
foreach($iterator as $data) {
echo $data->name."\n";
}
所以我尝试了这段代码,但它一直将结果限制为10:
$dataProvider = new CActiveDataProvider('Data');
$iterator = new CDataProviderIterator($dataProvider);
foreach($dataProvider as $data) {
echo $data->name."\n";
}
如果我这样做,我会得到“内存不足”的消息:
$dataProvider = new CActiveDataProvider('Data' array(
'criteria'=>array(
'order'=>'id DESC',
),
'pagination' => false
));
foreach($dataProvider as $data) {
echo $data->name."\n";
}
2条答案
按热度按时间dtcbnfnu1#
我不知道为什么你需要在一个页面中加载所有搜索结果,但你可以通过以下代码(并使用分页)将每页的项目数更改为所需的值:
这里有更多http://sonsonz.wordpress.com/2011/10/14/yii-examples-of-using-cdbcriteria/的例子
hi3rlvi22#
对大数据集使用CActiveDataProvider是不明智的。特别是如果你只想对它们执行后台任务。建议使用直接SQL并从那里开始。
根据对CreatoR答案的评论,您试图在一个大表中找到一些示例。例如: