2017-05-31 2 views
0

カスタムSQLでyii1 CGridViewを使用する必要があります。私はこの方法でそれを呼び出すyii1カスタムSQLを使用するCGridview

$model = new CasinoSgSessions('searchUserStats'); 
$this->render('index', array(
     'model' => $model, 
)); 

ビュー内側: 私は、コントローラに

public function searchUserStats() 
{ 
    $count = Yii::app()->db->createCommand() 
       ->select('count(DISTINCT user_id)') 
       ->from('casino_sg_sessions') 
       ->queryScalar(); 

    $sql = ' 
      SELECT 
        SUM(bet) bet_sum, 
        SUM(win) win_sum, 
        SUM(bet_count) bet_count, 
        user_id, 
        userName, 
        modified 
      FROM   
       (SELECT 
         (SELECT IFNULL(SUM(tr1.amount), 0) FROM casino_sg_transactions tr1 WHERE t.id = tr1.session_id AND tr1.action = \'bet\') AS bet, 
         (SELECT IFNULL(SUM(tr2.amount), 0) FROM casino_sg_transactions tr2 WHERE t.id = tr2.session_id AND tr2.action = \'win\') AS win, 
         (SELECT count(0) FROM casino_sg_transactions tr3 WHERE t.id = tr3.session_id) AS bet_count, 
         t.user_id, 
         u.userName, 
         t.modified 
        FROM `casino_sg_sessions` t 
        INNER JOIN user u ON u.id = t.user_id 
        ORDER BY modified DESC 
       ) user_stats 
      GROUP BY user_id 
      ORDER BY modified DESC 
    '; 
    $command = Yii::app()->db->createCommand($sql); 

    $dataProvider = new CSqlDataProvider($command, array(
     'totalItemCount'=>$count, 

     'pagination'=>array(
      'pageSize'=>15, 
     ), 
    )); 


    return $dataProvider; 

} 

を作成したモデルの内部this article

に従っている

$this->widget('application.widgets.grid.CGridView', array(
    'dataProvider' => $model->searchUserStats(), 
    'filter' => $model, 
    'columns' => array(
     [ 
      'header' => 'User ID', 
      'name' => 'user_id', 
      'value' => '$data->user_id', 
      'htmlOptions' => array('width'=>'150px'), 
     ], 

    ..... 
    ..... 

Iデータなしでページ区切りグリッドを受け取ります。

は膨大な時間を費やし、現在はあきらめました。

sqlクエリ自体が正常に動作します。

PS:私は、MySQLビューを使用してビューのモデルを作成できません。

PPS:クエリはもう少し複雑なので、私が見る唯一の方法はSQLクエリを通してCGridViewを使用することです。代わりに

$data->user_id 

のテンプレートで

答えて

0

iは

$data['user_id'] 

全く期待できない振る舞いを使用する必要がありました。彼らはソリッドについて聞いていないと私に思われる

関連する問題