문제

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,
            ),
        ));
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top