Can I execute two or more sql statement using yii CSqlDataProvider?
-
14-11-2019 - |
문제
I am trying to get few result on following sql statements using yii, But there are something wrong....!!!
$sql="SET @pStat=-1; SET @pdt=0; SELECT * FROM (SELECT !li.gen AS id,li.logAt, getDuration(gen,logAt) AS duration FROM os_loggerinfo li ) AS a WHERE a.duration>0;";
$count=count(Yii::app()->db->createCommand($sql)->query());
$dataProvider=new CSqlDataProvider($sql, array(
'totalItemCount'=>$count,
'pagination'=>array(
'pageSize'=> 10,
),
));
해결책
You are using count(Yii::app()->db->createCommand($sql)->query());
, I am not sure, but i think query()
just returns true or false. try using queryAll()
or if it's just a single row use queryRow()
다른 팁
$sql="SET @pStat=-1; SET @pdt=0; SELECT |selectPart| FROM (SELECT !li.gen AS id,li.logAt, getDuration(gen,logAt) AS duration FROM os_loggerinfo li ) AS a WHERE a.duration>0;";
$selectPart = 'COUNT(1) as cnt';
$count = Yii::app()->db->createCommand(str_replace('|selectPart|', $selectPart, $sql))->queryScalar();
$sql = str_replace('|selectPart|','*',$sql);
$dataProvider=new CSqlDataProvider($sql, array(
'totalItemCount'=>$count,
'pagination'=>array(
'pageSize'=> 10,
),
));
Try to use CArrayDataProvider
instead of CSqlDataProvider
:
$sql="SET @pStat=-1; SET @pdt=0; SELECT * FROM (SELECT !li.gen AS id,li.logAt, getDuration(gen,logAt) AS duration FROM os_loggerinfo li ) AS a WHERE a.duration>0;";
$result=Yii::app()->db->createCommand($sql)->queryAll();
$count=count($result);
$dataProvider=new CArrayDataProvider($result, array(
'totalItemCount'=>$count,
'pagination'=>array(
'pageSize'=> 10,
),
));
제휴하지 않습니다 StackOverflow