Laravel 5.2将用户IP地址保存到DB

时间:2016-11-03 09:49:26

标签: php mysql laravel

我在网站登录后尝试保存用户IP地址。我正在使用laravel 5.2框架。我有用户表和login_ip行。我的代码看起来像这样:

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

但它没有保存。我做错了什么?抱歉我的英文不好:)

6 个答案:

答案 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()]);

这不会在shoieb0101AmitRonald答案中创建其他查询。

不要忘记将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中输错了?