Php YII查询不起作用

Php YII查询不起作用,php,yii,Php,Yii,我有一张大约700000行的桌子 Profile::model()->findAll("country='US'") 我用它来查找所有以“我们”为国家的行。但是执行停止了,我没有得到任何结果。但后来我增加了如下限制 Profile::model()->findAll("country='US' limit 10000") 然后它成功了 为什么死刑停止了?请帮帮我。。我是YII的新手。如果您使用findAll,则所有记录都将被返回,不受任何限制。但是,cactivedaptapro

我有一张大约700000行的桌子

Profile::model()->findAll("country='US'")
我用它来查找所有以“我们”为国家的行。但是执行停止了,我没有得到任何结果。但后来我增加了如下限制

Profile::model()->findAll("country='US' limit 10000")
然后它成功了


为什么死刑停止了?请帮帮我。。我是YII的新手。

如果您使用
findAll
,则所有记录都将被返回,不受任何限制。但是,
cactivedaptaprovider
会自动对结果进行分页,如果您不另行说明的话。如评论中所述,在使用
findAll
时,内存可能会耗尽。使用限制或分页(自动应用限制)将返回的行数降低到应用程序可以处理的数量

我建议使用获取大量活动记录。请尝试以下示例代码

$criteria = new CDbCriteria;
$criteria->compare('country','US');

$Profiles = CDataProviderIterator(
   new CActiveDataProvider(
     'Profile',
      array('criteria'=>$criteria)
   ),
   10000
 );

foreach ($Profiles as $Profile) {
  //do whatever
}
使用迭代器,Yii将一次自动获取10000条记录(你说这个数字在没有耗尽内存的情况下工作),然后在抓取下一页之前将它们从内存中删除。使用
foreach
循环可以方便地访问所有记录,无需您做任何进一步的工作


根据需要更改10000值以获得所需结果。另外,请确保您正在监视错误日志,以识别内存不足和其他错误。

因为有太多记录导致内存不足?无论如何,没有更多的信息,这个问题毫无意义,因为我们只是猜测。将应用程序置于调试模式并进行调试。还需要什么信息?”$标准=新的CDB标准()$条件->添加条件('t.country=:country')$标准->参数[':国家]=“美国”$dataProvider=新的CActiveDataProvider('Profile',array('criteria'=>$criteria));'用这个。。然后它就开始工作了。来自服务器日志的错误消息将是一个良好的开端。您是否已将应用程序置于调试模式?$criteria=new CDbCriteria()$条件->添加条件('t.country=:country')$标准->参数[':国家]=“美国”$dataProvider=新的CActiveDataProvider('Profile',array('criteria'=>$criteria));使用此选项并获得输出。我需要知道为什么findAll()不起作用