Hi, I have created gridView using SqlDataProvider, and it works perfect. But now I need to create some filters for it. How can I do it? I think the best way is to create searchModel, but I don’t understand how.
public function actionIndex()
{
$count = (int) Yii::$app->db->createCommand('SELECT COUNT(*) FROM users')->queryScalar();
$dataProvider = new SqlDataProvider([
'sql' => 'SELECT
`id`,
`username`,
ROUND(SUM(IF(p.`points` is NULL,0,p.`points`)),2) AS `points`,
FROM `users`
LEFT JOIN `points` AS p ON (`users`.id = p.`id_user`)
GROUP BY t1.`id`',
'key' => 'id',
'totalCount' => $count,
'sort' => [
'attributes' => [
'id',
'username',
'points',
],
],
'pagination' => [
'pageSize' => 20,
],
]);
return $this->render('index',
[
'dataProvider' => $dataProvider,
]);
}
<?=
GridView::widget([
'dataProvider' => $dataProvider,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
'username',
'id',
'points',
],
]);
?>