[yii2] Paginazione

Prendendo dal getting started ho ;




<?php


namespace app\controllers;


use yii\web\Controller;

use yii\data\Pagination;

use app\models\Country;


class CountryController extends Controller

{

    public function actionIndex()

    {

        $query = Country::find();


        $pagination = new Pagination([

            'defaultPageSize' => 5,

            'totalCount' => $query->count(),

        ]);


        $countries = $query->orderBy('name')

            ->offset($pagination->offset)

            ->limit($pagination->limit)

            ->all();


        return $this->render('index', [

            'countries' => $countries,

            'pagination' => $pagination,

        ]);

    }

}




Mettiamo il caso però che io voglia solo determinate città , modificherei tutto così :




public function actionTesting(){


         //trovo tutti irecord di film con attivo==1

        $query = Country::find()->where(['attivo' =>1]) ->orderBy('data_ins desc')->all();


        $count= Country::find()->where(['attivo' =>1])->count();


        $pagination = new Pagination([

            'defaultPageSize' => 5,

            'totalCount' => $count,

        ]);


        $countries = $query->offset($pagination->offset)

            ->limit($pagination->limit)

            ->all();


        return $this->render('testing',[

                             'countries'=>$countries,

                             'pagination' => $pagination

                             ]);


        

    }



L’errore che ho è Call to a member function offset() on a non-object

Il problema è perchè se nella view uso il primo metodo e poi metto un if per la visualizzazione la paginazione viene sbagliata …

Come posso fare ?

Risolto così :




public function actionTesting(){


         //trovo tutti irecord di film con attivo==1

        $query = Country::find()->where(['attivo' =>1]);


        $count= Country::find()->where(['attivo' =>1])->count();


        $pagination = new Pagination([

            'defaultPageSize' => 5,

            'totalCount' => $count,

        ]);


        $countries = $query->offset($pagination->offset)

            ->limit($pagination->limit)

            ->all();


        return $this->render('testing',[

                             'countries'=>$countries,

                             'pagination' => $pagination

                             ]);


        

    }