我试图在登录网站后保存用户IP地址。我使用的是laravel 5.2框架。我得到了用户表和login_ip行。我的代码是这样的:
$user = User::where('login_ip', Request::getClientIp());
$user->save();
但是它不保存。我做错了什么?对不起,我的英语不好
如果您想为当前用户保存IP,您可以这样做:
auth()->user()->update(['login_ip' => Request::getClientIp()]);
这将不会在shoieb0101
, Amit
和Ronald
答案中创建额外的查询代码。
不要忘记在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打错字了?