如何使用Laravel 5.2在eloquent create方法中自动包含Request() - > ip()中的客户端IP地址?

时间:2016-02-28 06:38:02

标签: php routing httprequest 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

使用eloquent模型创建用户记录时,我使用create()方法,所以我不必为我们分配每个字段的值,除了IP&#39 ;字段。

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

public function createNewUser(Request $request) {

    return  $this->user->create($request->all());
}

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

谢谢!

2 个答案:

答案 0 :(得分:0)

这样的事情怎么样:

public function createNewUser(Request $request) {

    $requestArr = $request->all();
    $requestArr['ip'] = $request()->ip();
    return  $this->user->create($requestArr);
}

OR

public function createNewUser(Request $request) {

    return  $this->user->create(array_push($request->all(), array('ip' => $request()->ip())));
}

答案 1 :(得分:0)

经过网上挖掘后,我发现了做这件事的可靠方法。

public function createNewUser(Request $request) {

    $request->request->add(['ip' => $request->ip()]);

    return  $this->user->create($request->all());
}

@AlexeyMezenin提供的答案也会以某种方式起作用,但你必须做一些额外的代码才能使它工作。不管怎样,谢谢。