/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { $query = Properties::find(); $query->joinWith(['createdBy']); $dataProvider = new ActiveDataProvider(['query' => $query]); $dataProvider->sort->attributes['createdBy.username'] = ['asc' => ['user.username' => SORT_ASC], 'desc' => ['user.username' => SORT_DESC]]; if (!($this->load($params) && $this->validate())) { return $dataProvider; } $query->andFilterWhere(['id' => $this->id, 'object' => $this->object, 'created_by' => $this->created_by, 'updated_by' => $this->updated_by, 'created_at' => $this->created_at, 'updated_at' => $this->updated_at]); $query->andFilterWhere(['like', 'name', $this->name])->andFilterWhere(['like', 'description', $this->description])->andFilterWhere(['like', 'type', $this->type]); return $dataProvider; }
private function saveProperties($model) { if ($properties = Yii::$app->request->post('ExclusivesProperties', false)) { foreach ($properties as $property) { if ($propertyName = Properties::find()->where(['name' => $property['name']])->one()) { if ($propertyVal = ExclusivesProperties::find()->where(['property_id' => $propertyName['id'], 'exclusive_id' => $model->id])->one()) { $propertyVal->value = $property['value']; $propertyVal->save(); } else { $propertyVal = new ExclusivesProperties(); $propertyVal->exclusive_id = $model->id; $propertyVal->property_id = $propertyName->id; $propertyVal->value = $property['value']; $propertyVal->save(); } } else { $propertyName = new Properties(); $propertyName->name = $property['name']; $propertyName->save(); $propertyVal = new ExclusivesProperties(); $propertyVal->exclusive_id = $model->id; $propertyVal->property_id = $propertyName->id; $propertyVal->value = $property['value']; $propertyVal->save(); } } } }