Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

criteria Active data provider in Yii 2

Tags:

php

yii

yii2

I'm trying to display database for each user in descending date order using data provider this works for Yii 1 at controller :

         $DataProvider = new CActiveDataProvider('ModelName', array(
                'criteria' => array(
                'condition' => 'user_id=' . Yii::app()->user->id,
                'order' => 'submitted_dt DESC',
            ),
            'pagination' => array(
                'pageSize' => 20,
            ),
        ));

i try this in Yii 2 :

     $DataProvider = new ActiveDataProvider([
                'query' => ModelName::find(),
              'criteria' => [
                'condition' => 'user_id=' . Yii::$app->user->identity->id,
                'order' => 'submitted_dt DESC',
                 ], 
            'pagination' => [
                'pageSize' => 20,
            ],
        ]);

        // get posts in the current page
        $Model= $DataProvider->getModels();

Error i get is unknown property: yii\data\ActiveDataProvider::criteria .So what is the way to set this condition and order ? All suggestions are welcomed

like image 561
Deena Samy Avatar asked Jan 02 '15 18:01

Deena Samy


1 Answers

The Yii2's right way would be:

$DataProvider = new ActiveDataProvider([
        'query' => ModelName::find()->
            where(['user_id'=>Yii::$app->user->identity->id])->
            orderBy('submitted_dt DESC'),
        'pagination' => [
            'pageSize' => 20,
        ],
    ]);

    // get posts in the current page
    $Model= $DataProvider->getModels();

So, you don't need criteria in Yii2 as this is not exist anymore.

like image 97
Ali MasudianPour Avatar answered Sep 30 '22 14:09

Ali MasudianPour