Commit 658a5f37537813f0f9b3d3243ccebee7fc468698
1 parent
3c470529
test
Showing
4 changed files
with
130 additions
and
6 deletions
Show diff stats
1 | +<?php | |
2 | + | |
3 | + namespace common\models; | |
4 | + | |
5 | + use Yii; | |
6 | + use yii\base\Model; | |
7 | + use yii\data\ActiveDataProvider; | |
8 | + use common\models\User; | |
9 | + | |
10 | + /** | |
11 | + * CustomerSearch represents the model behind the search form about `common\models\UserInfo`. | |
12 | + */ | |
13 | + class CustomerSearch extends User | |
14 | + { | |
15 | + | |
16 | + public $type; | |
17 | + | |
18 | + public $rating; | |
19 | + | |
20 | + public $online; | |
21 | + | |
22 | + public $city; | |
23 | + | |
24 | + public $info; | |
25 | + | |
26 | + /** | |
27 | + * @inheritdoc | |
28 | + */ | |
29 | + public function rules() | |
30 | + { | |
31 | + return [ | |
32 | + [ | |
33 | + [ | |
34 | + 'type', | |
35 | + 'rating', | |
36 | + 'online', | |
37 | + ], | |
38 | + 'integer', | |
39 | + ], | |
40 | + [ | |
41 | + [ | |
42 | + 'city', | |
43 | + 'info', | |
44 | + ], | |
45 | + 'safe', | |
46 | + ], | |
47 | + ]; | |
48 | + } | |
49 | + | |
50 | + /** | |
51 | + * @inheritdoc | |
52 | + */ | |
53 | + public function scenarios() | |
54 | + { | |
55 | + // bypass scenarios() implementation in the parent class | |
56 | + return Model::scenarios(); | |
57 | + } | |
58 | + | |
59 | + /** | |
60 | + * Creates data provider instance with search query applied | |
61 | + * | |
62 | + * @param array $params | |
63 | + * | |
64 | + * @return ActiveDataProvider | |
65 | + */ | |
66 | + public function search($params) | |
67 | + { | |
68 | + $query = User::find() | |
69 | + ->joinWith('userInfo') | |
70 | + ->joinWith('companyInfo'); | |
71 | + | |
72 | + $dataProvider = new ActiveDataProvider([ | |
73 | + 'query' => $query, | |
74 | + ]); | |
75 | + | |
76 | + $this->load($params); | |
77 | + | |
78 | + if(!$this->validate()) { | |
79 | + // uncomment the following line if you do not want to return any records when validation fails | |
80 | + // $query->where('0=1'); | |
81 | + return $dataProvider; | |
82 | + } | |
83 | + | |
84 | + $query->andWhere([ | |
85 | + 'is_customer' => 1, | |
86 | + ]); | |
87 | + | |
88 | + if($this->type == 2) { | |
89 | + $query->andWhere([ | |
90 | + 'not', | |
91 | + [ 'company_info.company_info_id' => NULL ], | |
92 | + ]); | |
93 | + | |
94 | + $query->andWhere([ | |
95 | + 'type' => 2, | |
96 | + ]); | |
97 | + } else { | |
98 | + $query->andWhere([ | |
99 | + 'type', | |
100 | + ]); | |
101 | + } | |
102 | + | |
103 | + if($this->online == 1) { | |
104 | + $query->andWhere([ | |
105 | + '>=', | |
106 | + 'user_info.date_visit', | |
107 | + date('Y-m-d H:i:s.u', time() - 1800), | |
108 | + ]); | |
109 | + } | |
110 | + | |
111 | + $query->andFilterWhere([ | |
112 | + 'like', | |
113 | + 'user_info.city', | |
114 | + $this->city, | |
115 | + ]); | |
116 | + | |
117 | + return $dataProvider; | |
118 | + } | |
119 | + } | ... | ... |
common/models/User.php
frontend/controllers/SearchController.php
frontend/views/search/customer.php
1 | 1 | <?php |
2 | -/** | |
3 | - * Created by PhpStorm. | |
4 | - * User: vitaliy | |
5 | - * Date: 09.03.16 | |
6 | - * Time: 10:21 | |
7 | - */ | |
2 | + use common\models\CustomerSearch; | |
3 | + | |
4 | + $model = (new CustomerSearch())->search(\Yii::$app->request->queryParams); | |
5 | + var_dump($model->totalCount); | |
6 | + | |
8 | 7 | ?> |
9 | 8 | <div class="section-box-22 section-box-customer"> |
10 | 9 | <div class="box-wr"> | ... | ... |