Blame view

common/models/ProductToProjectSearch.php 2.86 KB
cc658b4c   Yarik   Big commit
1
  <?php
96410438   Yarik   Project admin com...
2
3
4
5
6
7
8
9
      
      namespace common\models;
      
      use Yii;
      use yii\base\Model;
      use yii\data\ActiveDataProvider;
      use common\models\ProductToProject;
      
cc658b4c   Yarik   Big commit
10
      /**
96410438   Yarik   Project admin com...
11
12
       * ProductToProjectSearch represents the model behind the search form about
       * `common\models\ProductToProject`.
cc658b4c   Yarik   Big commit
13
       */
96410438   Yarik   Project admin com...
14
      class ProductToProjectSearch extends ProductToProject
cc658b4c   Yarik   Big commit
15
      {
96410438   Yarik   Project admin com...
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
          
          public $variant_name;
          
          public $product_name;
          
          /**
           * @inheritdoc
           */
          public function rules()
          {
              return [
                  [
                      [
                          'variant_name',
                          'product_name',
                      ],
                      '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
           *
           * @return ActiveDataProvider
           */
          public function search($params)
          {
              $query = ProductToProject::find()
                                       ->joinWith('productVariant.lang')
                                       ->joinWith('product.lang');
              
              // add conditions that should always apply here
              
              $dataProvider = new ActiveDataProvider([
                  'query' => $query,
                  'sort'  => [
                      'attributes' => [
                          'variant_name' => [
                              'asc'  => [ 'product_variant_lang.name' => SORT_ASC ],
                              'desc' => [ 'product_variant_lang.name' => SORT_DESC ],
                          ],
                          'product_name' => [
                              'asc'  => [ 'product_lang.name' => SORT_ASC ],
                              'desc' => [ 'product_lang.name' => SORT_DESC ],
                          ],
                      ],
                  ],
              ]);
              
              $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([
                  'like',
                  'product_variant_lang.name',
                  $this->variant_name,
              ])
                    ->andFilterWhere([
                        'like',
                        'product_lang.name',
                        $this->product_name,
                    ]);
              
cc658b4c   Yarik   Big commit
97
98
              return $dataProvider;
          }
cc658b4c   Yarik   Big commit
99
      }