/** * Creates a new User model. * If creation is successful, the browser will be redirected to the 'view' page. * @return mixed */ public function actionCreate() { $user = new User(['scenario' => 'create']); $profile = new Profile(); if ($user->load(Yii::$app->request->post()) && $profile->load(Yii::$app->request->post())) { if ($user->validate() && $profile->validate()) { //$user->populateRelation('profile', $profile); if ($user->save(false)) { $user->link('profile', $profile); Yii::$app->session->setFlash('success', Module::t('users', 'User has been successfully created.')); return $this->redirect(['update', 'id' => $user->id]); } else { Yii::$app->session->setFlash('danger', Module::t('users', 'User has not been saved. Please try again!')); return $this->refresh(); } } } return $this->render('create', ['user' => $user, 'profile' => $profile]); }
/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { //$query = User::find(); $query = self::find()->joinWith(['profile']); $dataProvider = new ActiveDataProvider(['query' => $query]); $dataProvider->sort->attributes['first_name'] = ['asc' => [Profile::tableName() . '.first_name' => SORT_ASC], 'desc' => [Profile::tableName() . '.first_name' => SORT_DESC]]; $dataProvider->sort->attributes['last_name'] = ['asc' => [Profile::tableName() . '.last_name' => SORT_ASC], 'desc' => [Profile::tableName() . '.last_name' => SORT_DESC]]; if (!($this->load($params) && $this->validate())) { return $dataProvider; } $query->andFilterWhere(['id' => $this->id, 'status' => $this->status, 'role' => $this->role, 'FROM_UNIXTIME(created_at, "%d.%m.%Y")' => $this->created_at, 'FROM_UNIXTIME(updated_at, "%d.%m.%Y")' => $this->updated_at]); $query->andFilterWhere(['like', Profile::tableName() . '.first_name', $this->first_name]); $query->andFilterWhere(['like', Profile::tableName() . '.last_name', $this->last_name]); $query->andFilterWhere(['like', 'username', $this->username]); $query->andFilterWhere(['like', 'email', $this->email]); return $dataProvider; }
/** * @return ActiveQuery */ public function getProfile() { return $this->hasOne(Profile::className(), ['user_id' => 'id'])->inverseOf('user'); }