Yii2 ActiveRecord没有保存?

时间:2016-09-07 09:43:05

标签: php yii2

查看:

<?= $form->field($model, 'password2')->passwordInput(['value'=>''])->label(Yii::t('app', 'Password2')) ?>

模型

Class Admin extends ActiveRecord implements IdentityInterface
{

    public $password2;

    public static function tableName() {
        return 'app_users';
    }

    public function rules()
    {
        return [
            [['fullname', 'username', 'password', 'password2', 'role_id'], 'required'],
            ['username', 'unique'],
            ['password2', 'compare', 'compareAttribute'=>'password', 'message'=>Yii::t('app', 'Passwords don\'t match') ],
            [['role_id', 'alive'], 'integer'],
            ['image', 'file', 'extensions' => ['png', 'jpg', 'gif'], 'maxSize' => 1024 * 1024 * 2],
            [['access_deadline'], 'safe']
        ];
    }

我正在尝试保存模型,但是AN ERROR抛出:"Password2 is required!"。如何绕过此错误并成功保存模型?

2 个答案:

答案 0 :(得分:0)

您可以使用

成功绕过此错误保存模型
$model->save(false);

以这种方式将值保存在inb db中而不执行验证

答案 1 :(得分:0)

如果我做对了,你的SQL DB中有字段Password2,它是一个必需的列,这意味着你将无法在DB中保存任何模型,该字段为{{1即使你实际上并不需要它,也要在数据库中。

我看到它的方式,你有三个选择。

  • 您可以转到您的控制器,在null之前,您可以为$model->save()字段提供您选择的值。
  • 你也可以去你的数据库并且不需要这个fild。从SQL中的此字段中取出$model->password2选项。但是,请在模型中保留所需的选项。这样您就不需要在数据库中使用它,但是您需要在表单中使用它,以检查用户是否正确输入了密码。
  • 使用scaisEdge给你的建议

希望它有所帮助。祝好运!