Laravel 5.2保存用户IP地址到DB


Laravel 5.2 save user IP adress to DB

我试图在登录网站后保存用户IP地址。我使用的是laravel 5.2框架。我得到了用户表和login_ip行。我的代码是这样的:

$user = User::where('login_ip', Request::getClientIp());
$user->save();

但是它不保存。我做错了什么?对不起,我的英语不好

如果您想为当前用户保存IP,您可以这样做:

auth()->user()->update(['login_ip' => Request::getClientIp()]);

这将不会在shoieb0101, AmitRonald答案中创建额外的查询代码。

不要忘记在User模型中将login_ip添加到$fillable数组中:

protected $fillable = ['login_ip'];

如果您想只为登录用户保存IP,而忽略来宾,您可以执行检查:

!auth()->check() ? : auth()->user()->update(['login_ip' => Request::getClientIp()]);

Try

$user = User::find(auth()->user()->id);
$user->login_ip = Request::getClientIp();
$user->save();

//假设$userid也被请求

$user = User::where('id', $userid);
$user->login_ip = Request::getClientIp();
$user->save();

您可以尝试如下:

auth()->user()->login_ip = Request::getClientIp();
auth()->user()->save();

auth()->user()->save(['login_ip' => Request::getClientIp()]);

注意-它将在单个查询中更新用户的login_ip

你不必从db中获得user的记录,关于user的所有信息都在Auth::user()中,所以:

Auth::user()->login_ip = Request::getClientIp();
Auth::user()->save();

Auth::user()->login_ip = $request->ip();
Auth::user()->save();

但是你需要有Request $request作为你的方法的参数

我可能说的是显而易见的,但是你的第一行…

$ user =用户::(login_ip,请求:getClientIp ());

…返回一个Eloquent查询生成器,对吧?

所以,save()在这将永远不会工作?

$ user =用户::(login_ip,请求:getClientIp ()) -> ();

…将返回一个实际的User(如果在DB中),这使得save()也是可能的。

还是你的OP打错字了?