2012-01-26 4 views
1

私はyiiを使用してSQL文を実行した結果はほとんど得られませんが、間違っています....yii CSqlDataProviderを使用して2つ以上のSQL文を実行できますか?

$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, 
      ), 
     )); 

答えて

1

あなたはcount(Yii::app()->db->createCommand($sql)->query());を使用している、私はわからないが、私はquery()だけでtrueまたはfalseを返すと思います。 queryAll()を使用してみてくださいか、それは単に1つの行の場合は代わりにCSqlDataProviderCArrayDataProviderを使用してみてくださいqueryRow()

0
$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, 
     ), 
    )); 
0

を使用します。

$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, 
      ), 
     )); 
関連する問題