Yii2 save()使用默认值创建DB行

时间:2017-02-16 03:50:14

标签: php mysql yii2

我正在尝试使用OpenID实现登录方法,并且$ _SESSION var正确发布 - 并且通过这些我只是尝试在MySQL中注册用户。出于某种原因,在我的控制器::

中通过“登录”操作时
decimal argument = 123.456m;
int count = BitConverter.GetBytes(decimal.GetBits(argument)[3])[2];

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

    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);
}

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

非常感谢任何帮助,谢谢。

2 个答案:

答案 0 :(得分:0)

如果您使用公共变量重新定义相同的列名称,则覆盖activeRecord的变量,然后仅保存为空值。

如果这样你必须删除模型中的(redifined)公共变量

否则如果你没有规则那么

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

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

答案 1 :(得分:0)

声明'public'变量使save()忽略了发布的数据。感谢。