Php Laravel 5.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

我尝试在登录网站后保存用户IP地址。我使用的是Laravel5.2框架。我得到了用户表和登录ip行。我的代码如下所示:

$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