200], ['number','string','max' =>200] ]; } /** * @inheritdoc */ public function scenarios() { // bypass scenarios() implementation in the parent class return Model::scenarios(); } public function attributeLabels(){ return ArrayHelper::merge(parent::attributeLabels(), [ 'card_number' => 'Kártya szám', 'customerName' => 'Vendég' ] ); } /** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { $query = new Query(); $query->select(['card.id_card as card_id_card', 'card.number as card_number' , 'customer.name as customer_name', 'customer.email as customer_email','customer.phone as customer_phone']); $query->from('card'); $query->innerJoin('customer','card.id_card = customer.id_customer_card'); $query->leftJoin("card_key_assignment", 'card.id_card = card_key_assignment.id_card'); $query->leftJoin("key", 'key.id_key = card_key_assignment.id_key'); $query->orderBy(['customer.name' => SORT_ASC]); $dataProvider = new ActiveDataProvider([ 'query' => $query, ]); $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; } // $query->andFilterWhere([ // 'lower(card.number)' => $this->customerName // ]); if ( !empty($this->number)){ $query->andWhere(['or', ['and',[ 'in','card.number' , [$this->number]],"trim(coalesce(card.number, '')) <>'' " ], ['and', ['in','card.rfid_key' ,[ $this->number] ],"trim(coalesce(card.rfid_key, '')) <>'' "], ['and',[ 'in','key.number' , [$this->number]],"trim(coalesce(key.number, '')) <>'' " ], ['and', ['in','key.rfid_key' ,[ $this->number] ],"trim(coalesce(key.rfid_key, '')) <>'' "] ]); } $query->andFilterWhere(['like', 'customer.name', $this->customerName]); return $dataProvider; } }