Php 使用Yii活动记录从数据库中读取多行

Php 使用Yii活动记录从数据库中读取多行,php,activerecord,model,yii,Php,Activerecord,Model,Yii,我希望能够使用Yii框架读取多行,而不必创建多个模型对象。考虑到这一点,我正在设置一个条件为RowName=:param0或RowName=param1的CDbCriteria。。。RowName=ParamN和相应的params值 我的问题有两方面。首先是findall失败了。第二,我不知道如何从findall调用中获取错误代码(因此返回“heartBeat”行) 类Xactions扩展了CActiveRecord { . . . //示例$requests数据:“192.168.1.1621

我希望能够使用Yii框架读取多行,而不必创建多个模型对象。考虑到这一点,我正在设置一个条件为RowName=:param0或RowName=param1的CDbCriteria。。。RowName=ParamN和相应的params值

我的问题有两方面。首先是findall失败了。第二,我不知道如何从findall调用中获取错误代码(因此返回“heartBeat”行)

类Xactions扩展了CActiveRecord { . . . //示例$requests数据:“192.168.1.162192.168.1.161” //此函数应返回与任何行关联的Xactions模型 //其中tcpAddress=$请求逗号分隔的值。 公共静态函数模型($requests) { $criteria=新的CDB标准; $request_arr=分解(“,”,$requests); $criteria->condition=Xactions::request_condition(“tcpAddress”,count($request_arr));; $criteria->params=Xactions::request_params($request_arr); $return=Xactions::model()->findall($criteria); 返回“heartBeat”;//此处用于调试 } 公共静态函数请求条件($column\u name,$num\u request){ //希望以name=:param1或name=:param2结束。。。。 $return_str=“”; 对于($i=0;$i<$num_请求;$i++){ $return_str.=$column_name.'=param.'(字符串)$i.'; 如果($i==$num\u请求-1)中断;//防止额外的OR语句 $return_str.='OR'; } return$return\u str; } 公共静态函数请求参数($requests){ $return_arr=array(); 对于($i=0;$i也许像这样的方法可以奏效

class Xactions extends CActiveRecord {
        public static function HeartBeatmodel($requests) {
                $criteria = new CDbCriteria;
                $request_arr =  explode(',', $requests);

                for($request_arr as $request) {
                    $criteria->compare('tcpAddress', $request, false, 'OR');
                }

                return Xactions::model()->findAll($criteria);
        }
我使用的是CDbCriteria->compare,您可以在这里找到规范:

如您所见,我将
$partialMatch
设置为false,并将
$operator
设置为
,这样它就可以实现您想要的功能,对吗

编辑:我刚刚意识到,最聪明的方法就是这样做

public static function HeartBeatmodel($requests) {
  $criteria = new CDbCriteria;
  $criteria->addInCondition('tcpAddress', explode(',', $requests));

  return Xactions::model()->findAll($criteria);
}

拼写为findAll?也许这就是问题所在?不,不幸的是,这不是问题所在。这看起来很有希望,我明天必须测试这个,并报告我的发现。
public static function HeartBeatmodel($requests) {
  $criteria = new CDbCriteria;
  $criteria->addInCondition('tcpAddress', explode(',', $requests));

  return Xactions::model()->findAll($criteria);
}