yii2 save()创建具有默认值的DB行



我正在尝试使用openID实现登录方法,而$ _Session var的var可以正确发布 - 通过那些我只是试图在mySQL中注册用户。由于某种原因,当通过我的控制器中的"登录"操作::

    public function actionLogin()
{
    if (!Yii::$app->user->isGuest) {
        return $this->goHome();
    }
    include ('../views/user-record/steamauth/userInfo.php');
    $steamid = $_SESSION['steam_steamid'];
    $username = $_SESSION['steam_personaname'];
    $profileurl = $_SESSION['steam_profileurl'];
    $avatar = $_SESSION['steam_avatar'];
    $avatarmedium = $_SESSION['steam_avatarmedium'];
    $avatarfull = $_SESSION['steam_avatarfull'];
    $user = UserRecord::findBySteamId($steamid);
    if ($user === null)
    {
        $user = new UserRecord();
        $user->steamid = $steamid;
        $user->username = $username;
        $user->profileurl = $profileurl;
        $user->avatar = $avatar;
        $user->avatarmedium = $avatarmedium;
        $user->avatarfull = $avatarfull;
        $user->verified = 0;
        $user->banned = 0;
        $user->save();
    }
    Yii::$app->user->login($user, 604800);
    return $this->redirect(Yii::$app->user->returnUrl);
}

编辑:这是userrecord类,忘了添加。

<?php
namespace appmodels;
class UserRecord extends yiidbActiveRecord implements yiiwebIdentityInterface
{
    public $id;
    public $steamid;
    public $username;
    public $profileurl;
    public $avatar;
    public $avatarmedium;
    public $avatarfull;
    public $verified;
    public $banned;
    public $rank;
    public $authKey;
//    public $password;
//    public $accessToken;
    public static function tableName()
    {
        return 'users';
    }
    public function getAuthKey() 
    {
        return $this->authKey;
    }
    public function getId()
    {
        return $this->id;
    }
    public function validateAuthKey($authKey)
    {
        return $this->authKey === $authKey;
    }
    public static function findIdentity($id)
    {
        return self::findOne($id);
    }
    public function validateSteamID($steamid)
    {
        return $this->steamid === $steamid;
    }
    public static function findIdentityByAccessToken($token, $type = null)
    {
        throw new yiibaseNotSupportedException;
    }
    public static function findBySteamId($steamid)
    {
        return self::findOne(['steamid' => $steamid]);
    }
}

结果只是发布的一行,没有输入数据。

任何帮助将不胜感激,谢谢。

如果使用public vars重新定义了相同的列名称,则这些列出了activerecord的var,然后仅保存空值。

如果您必须在模型中删除(重新分组的)公共var

否则,如果您没有规则,则

尝试在模型规则中的属性添加安全

public function rules()
{
   return [
      [['steamid', 'username', 'profileurl', 'avatar', 'avatarmedium', 
               'avatarfull', 'verified', 'banned', 'rank', 'authKey',], 'safe'],
   ];
 }

声明'public'变量使保存()忽略了所发布的数据。谢谢。

最新更新