yii2 не сохраняет все поля - PullRequest
0 голосов
/ 04 мая 2020

У меня есть эта модель пользователя:

  public $id;
    public $username;
    public $name;
    public $password;
    public $authKey;
    public $accessToken;

и эта модель формы

  class SignupForm extends Model

{
    public $username;
    public $name;
    public $email;
    public $password;
    public $fio;
    public $phone;

И я пытаюсь сохранить:

$user = new User();
            $user->username = $this->username;
            $user->name = $this->name;
            $user->email = $this->email;
            var_dump($this->username);
            var_dump($user->username);
            var_dump($this->name);
            var_dump($user->name);

            $user->save(false);

Но в базе данных Таблица это только сохраняет поле электронной почты. Все данные в var_dump верны.

1 Ответ

0 голосов
/ 04 мая 2020

С здесь :

Оказывается, что если вы объявляете атрибуты publi c в вашей модели ActiveRecord, они затеняют автоматические атрибуты c, созданные AR , Данные присваиваются вашим скрывающим атрибутам, но не отправляются в базу данных.

Вы также можете использовать функцию attributes() модели, чтобы объявить поля вашей модели и установить проверку полей, используя rules() функция.

Пример:

public function attributes()
{
    return [
        'id',
        'username',
        'name',
        'email',
    ];
}

public function rules()
{
    return [
        ['id', 'safe'],
        [['username', 'name', 'email'], 'required'],
        [['username', 'name', 'email'], 'string'],
    ];
}

Для получения дополнительной информации и примеров, пожалуйста, ознакомьтесь с документацией

...