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
のテンプレートで