我正在使用Laravel / Socialite对Facebook登录进行编码。
我在回调函数中使用UpdateOrCreate,所以如果用户不存在,Laravel将创建一条新记录,否则,将更新现有记录中的一些数据。
public function handleProviderCallback()
{
$user = Socialite::driver('facebook')->stateless()->user();
$key_token = $user->token;
$key_fb = $user->getId();
$name = $user->getName();
$email = $user->getEmail();
$url_photo = $user->getAvatar();
$user = User::updateOrCreate(
[
'email' => $email
],
[
'name' => $name,
'key_fb' => $key_fb,
'url_photo' => $url_photo,
'ḱey_token' => $key_token,
'date_lastlogin' => \Carbon\Carbon::now(),
]
);
Auth::loginUsingId($user->id);
return redirect('home');
}
但是,作为“更新”或“创建”,绝不会插入/更新“ key_token”。 Mysql显示默认值Null。其他列工作正常。
我检查了key_token的值,并在所有上下文中填充了它。 同样,用户模型$ fillable数组包含“ key_token”。
protected $fillable = [
'name', 'email', 'password', 'key_fb', 'url_photo', 'date_lastlogin', 'key_token',
];
我也已经在$ key_token位置运行了实际的字符串(从FB接收到的令牌),但是key_token继续用Null值填充。
(...)
'url_photo' => $url_photo,
'ḱey_token' => "IjasIJ937Jdsi823KJAndksu.......",
'date_lastlogin' => \Carbon\Carbon::now(),
(...)
回显$ user(从UpdateOrCreate返回)时,key_token的值为Null
要插入/更新key_token怎么办?