如何使用 Laravel 5.2 在雄辩的创建方法中自动包含来自 Request()->ip() 的客户端 IP 地址


How to automatically include client ip address from Request()->ip() in eloquent create method using Laravel 5.2?

我有这组雄辩的模型:

    class UserModel extends Model
    {
        protected $fillable = array(
                'first_name',
                'last_name',
                'email',
                'password',
                'ip',
            );
        protected $table = 'users';
    }

这个想法是...每当客户在我们的网站上注册为用户时,我想包括客户的IP地址。

在 Laravel 5.2 中,我们可以使用 Request() 类检索客户端 IP 地址

请求()->ip()

https://laravel.com/api/5.2/Illuminate/Http/Request.html#method_ip

使用雄辩模型创建用户记录时,我使用 create() 方法,因此我不必为我们分配除"IP"字段之外的每个字段的值。

有没有办法自动分配来自 UserModel 的"IP"字段,值来自 Request()->ip() 方法?

public function createNewUser(Request $request) {
    return  $this->user->create($request->all());
}

任何建议/反馈将不胜感激。

谢谢!

在网上进行了

一些挖掘之后,我找到了做这些事情的可靠方法。

public function createNewUser(Request $request) {
    $request->request->add(['ip' => $request->ip()]);
    return  $this->user->create($request->all());
}

@AlexeyMezenin提供的答案也可以以某种方式工作,但您必须做一些额外的代码才能正常工作。无论如何,谢谢。

像这样的事情怎么样:

public function createNewUser(Request $request) {
    $requestArr = $request->all();
    $requestArr['ip'] = $request()->ip();
    return  $this->user->create($requestArr);
}

public function createNewUser(Request $request) {
    return  $this->user->create(array_push($request->all(), array('ip' => $request()->ip())));
}