Php Laravel 5.2将用户IP地址保存到数据库
我尝试在登录网站后保存用户IP地址。我使用的是Laravel5.2框架。我得到了用户表和登录ip行。我的代码如下所示:Php Laravel 5.2将用户IP地址保存到数据库,php,mysql,laravel,Php,Mysql,Laravel,我尝试在登录网站后保存用户IP地址。我使用的是Laravel5.2框架。我得到了用户表和登录ip行。我的代码如下所示: $user = User::where('login_ip', Request::getClientIp()); $user->save(); 但这并不意味着节约。我做错了什么?对不起,我的英语不好:)您可以通过以下方式尝试: auth()->user()->login_ip = Request::getClientIp(); auth()->user
$user = User::where('login_ip', Request::getClientIp());
$user->save();
但这并不意味着节约。我做错了什么?对不起,我的英语不好:)您可以通过以下方式尝试:
auth()->user()->login_ip = Request::getClientIp();
auth()->user()->save();
或
注意-它将在单个查询中更新用户的登录\u ip
。您可以通过以下方式进行尝试:
auth()->user()->login_ip = Request::getClientIp();
auth()->user()->save();
或
注意-它将在单个查询中更新用户的登录ip。尝试
$user = User::find(auth()->user()->id);
$user->login_ip = Request::getClientIp();
$user->save();
试一试
如果要为当前用户保存IP,可以执行以下操作:
auth()->user()->update(['login_ip' => Request::getClientIp()]);
这不会在shoieb0101
、Amit
和Ronald
答案中创建额外的查询
不要忘记在用户
模型中向数组添加登录ip
:
protected $fillable = ['login_ip'];
如果您只想为登录用户保存IP并忽略来宾,您可以执行以下检查:
!auth()->check() ? : auth()->user()->update(['login_ip' => Request::getClientIp()]);
如果要为当前用户保存IP,可以执行以下操作:
auth()->user()->update(['login_ip' => Request::getClientIp()]);
这不会在shoieb0101
、Amit
和Ronald
答案中创建额外的查询
不要忘记在用户
模型中向数组添加登录ip
:
protected $fillable = ['login_ip'];
如果您只想为登录用户保存IP并忽略来宾,您可以执行以下检查:
!auth()->check() ? : auth()->user()->update(['login_ip' => Request::getClientIp()]);
//假设还请求了$userid
$user = User::where('id', $userid);
$user->login_ip = Request::getClientIp();
$user->save();
//假设还请求了$userid
$user = User::where('id', $userid);
$user->login_ip = Request::getClientIp();
$user->save();
您不必登录
user
表单db
,您在Auth::user()
中的用户的所有信息,因此:
Auth::user()->login_ip = Request::getClientIp();
Auth::user()->save();
或
但是您需要将Request$Request
作为方法的参数。您不必登录user
表单db
,所有关于用户的信息都在Auth::user()
中,因此:
Auth::user()->login_ip = Request::getClientIp();
Auth::user()->save();
或
但是您需要将Request$Request
作为您的方法的参数。我可能是在陈述显而易见的,但您的第一行
$user=user::where('login_ip',Request::getClientIp())
。。。返回一个雄辩的查询生成器,对吗
那么,对它执行save()将永远不起作用
$user=user::where('login_ip',Request::getClientIp())->first()
。。。将返回实际用户(如果在数据库中),这使得save()也成为可能
还是你在作品中打错了字?我可能是在说显而易见的事情,但你的第一行
$user=user::where('login_ip',Request::getClientIp())
。。。返回一个雄辩的查询生成器,对吗
那么,对它执行save()将永远不起作用
$user=user::where('login_ip',Request::getClientIp())->first()
。。。将返回实际用户(如果在数据库中),这使得save()也成为可能
或者您在OP中输入了错误?因为Laravel总是为经过身份验证的用户获取User
实例,这种方法将创建冗余查询,所以当您使用它时,您将得到两个类似的查询,而不是一个。答案更新..使用auth()-User()
作为客户端
模型对象。现在,它将在一个查询中完成。当您的$filleble
用户模型数组中没有登录ip
时,它也会工作。由于Laravel总是为经过身份验证的用户获取用户
实例,因此这种方法将创建冗余查询,因此当您使用它时,您将得到两个类似的查询,而不是一个。答案已更新..使用auth()-user()
作为client
model对象。现在,它将在单个查询中完成。当您的$filleble
用户模型数组中没有login\u ip
时,它也会工作。但是Auth::user()
获取登录用户的用户对象。@imrealashu,这就是OP想要的:保存登录用户的IP。很抱歉,我可能误解了,但我不理解第一行。但是Auth::user()
获取登录用户的用户对象。@imreaashu,这就是OP想要的:保存登录用户的IP。很抱歉,我可能误解了,但我不理解第一行。好的。现在,我得到了错误“调用null上的成员函数update()”@ББММааМаааааааааааа107。如果是这种情况,请将代码包装在If(auth()->check()){..}
中。或者在更新的答案中使用三元运算符。好的,谢谢,现在我没有收到错误,但是我检查了DB中的登录ip,它仍然是空的。似乎没有将ip保存到DB@ММааМааааааааааааааа?如果是的话,dd(Request::getClientIp())的作用是什么代码>表演?真奇怪。之后我会在pageOk上获得我的IP。现在,我得到了错误“调用null上的成员函数update()”@ББММааМаааааааааааа107。如果是这种情况,请将代码包装在If(auth()->check()){..}
中。或者在更新的答案中使用三元运算符。好的,谢谢,现在我没有收到错误,但是我检查了DB中的登录ip,它仍然是空的。似乎没有将ip保存到DB@ММааМааааааааааааааа?如果是的话,dd(Request::getClientIp())的作用是什么代码>表演?真奇怪。在那之后,我将在第页获得我的IP