Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace app\models;
- use yii\base\Model;
- use yii\data\ActiveDataProvider;
- use app\models\Clients;
- use yii\data\ArrayDataProvider;
- /**
- * ClientSearch represents the model behind the search form of `app\models\Clients`.
- */
- class ClientSearch extends Clients
- {
- /**
- * {@inheritdoc}
- */
- public function rules()
- {
- return [
- [['id'], 'integer'],
- [['name', 'email', 'address', 'profession', 'created_date', 'updated_date'], 'safe'],
- ];
- }
- /**
- * {@inheritdoc}
- */
- public function scenarios()
- {
- // bypass scenarios() implementation in the parent class
- return Model::scenarios();
- }
- /**
- * Creates data provider instance with search query applied
- *
- * @param array $params
- *
- */
- public function search($params)
- {
- $query = Clients::find();
- // add conditions that should always apply here
- $dataProvider = new ActiveDataProvider([
- 'query' => $query
- ]);
- $dataProvider->setPagination(false);
- $this->load($params);
- if (!$this->validate()) {
- // uncomment the following line if you do not want to return any records when validation fails
- // $query->where('0=1');
- return $dataProvider;
- }
- // grid filtering conditions
- $query->andFilterWhere([
- 'id' => $this->id,
- 'created_date' => $this->created_date,
- 'updated_date' => $this->updated_date,
- ]);
- $query->andFilterWhere(['like', 'name', $this->name]);
- $models = [];
- foreach ($dataProvider->models as $model)
- {
- if( $model->getTransactions()->count() > 0){
- $models[]=$model;
- }
- }
- $dataProvider->setModels($models);
- $dataProvider->setTotalCount(count($models));
- $dataProvider->setPagination([
- 'totalCount' => count($models),
- 'pageSizeLimit' => 20
- ]);
- return new ArrayDataProvider([
- 'allModels' => $dataProvider->models,
- 'sort' => [],
- 'pagination' => [
- 'pageSize' => 20,
- ],
- ]);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement