我在网站登录后尝试保存用户IP地址。我正在使用laravel 5.2框架。我有用户表和login_ip行。我的代码看起来像这样:
$user = User::where('login_ip', Request::getClientIp());
$user->save();
但它没有保存。我做错了什么?抱歉我的英文不好:)
答案 0 :(得分:0)
您可以尝试:
public class DatabaseContext: DbContext
{
// DbSet's
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
// magic starts
modelBuilder.Entity<YourEntity>()
.Property(e => e.ReportDate)
.HasColumnType("date");
// magic ends
// ... other bindings
}
}
OR
auth()->user()->login_ip = Request::getClientIp();
auth()->user()->save();
注意 - 它会在单个查询中更新用户的auth()->user()->save(['login_ip' => Request::getClientIp()]);
。
答案 1 :(得分:0)
尝试
$user = User::find(auth()->user()->id);
$user->login_ip = Request::getClientIp();
$user->save();
答案 2 :(得分:0)
如果要为当前用户保存IP,可以执行以下操作:
auth()->user()->update(['login_ip' => Request::getClientIp()]);
这不会在shoieb0101
,Amit
和Ronald
答案中创建其他查询。
不要忘记将login_ip
添加到User
模型中的$fillable
数组中:
protected $fillable = ['login_ip'];
如果您只想为登录用户保存IP并忽略来宾,您可以进行检查:
!auth()->check() ? : auth()->user()->update(['login_ip' => Request::getClientIp()]);
答案 3 :(得分:0)
//假设还要求$ userid
$user = User::where('id', $userid);
$user->login_ip = Request::getClientIp();
$user->save();
答案 4 :(得分:0)
您无需记录user
表单db
,所有关于user
Auth::user()
Auth::user()->login_ip = Request::getClientIp();
Auth::user()->save();
的信息,所以:
Auth::user()->login_ip = $request->ip();
Auth::user()->save();
或
Request $request
但您需要group_start()
作为方法的参数。
答案 5 :(得分:0)
我可能会说明显而易见的,但是你的第一行......
$ user = User :: where('login_ip',Request :: getClientIp());
...返回一个Eloquent查询构建器,对吗?
那么,对此的save()将不起作用吗?
$ user = User :: where('login_ip',Request :: getClientIp()) - &gt; first();
...将返回一个实际的用户(如果在数据库中),这使得save()也成为可能。
或者你的OP中输错了?