У меня есть такой метод:
public function beforeSave($insert)
{
if (parent::beforeSave($insert)) {
$this->password = Yii::$app->getSecurity()->generatePasswordHash($this->password);
return true;
}
return false;
}
public function afterSave($insert, $changedAttributes)
{
# Добавляем пользователю группу пользователя
$auth = Yii::$app->authManager;
$user_group = $auth->getRole('user');
$auth->assign($user_group, $this->id);
parent::afterSave($insert, $changedAttributes);
}
Перед сохранением генерируем пароль для пользователя.
Сейчас возникла такая проблема, что при попытки обновить данные пользователя, к примеру имя.
$model = Users::findOne(['id'=>1]);
$model->name = 'New name';
$model->save();
$model->save() - возвращает false.
$model->validate() - возвращает false;
$model->getErrors() - возвращает пустой массив.
Вот сам процесс изменения поля, изменяю баланс:
//$user = Users::findOne(['id'=>Yii::$app->user->identity->id]);
$user = Users::find()->where(['id' => Yii::$app->user->identity->id])->one();
$user->balance = ($user->balance - $cost);
if (!$order->save() || !$user->update()) {
$response = ['code' => -99, 'text' => 'Произошла неизвестная ошибка, обратитесь в тех поддержку, код ошибки: -99'];
$this->printAPI($response);
} else {
$response = ["code" => 5, "text" => "Заказ №" . $order->id . " успешно создан! ", 'balance' => $user->balance];
$this->printAPI($response);
}
В чем может быть проблема? Почему не сохраняет, я грешу на методы after и berfore save.