Laravel 5:向 $request->all() 添加数据

Posted

技术标签:

【中文标题】Laravel 5:向 $request->all() 添加数据【英文标题】:Laravel 5: add data to $request->all() 【发布时间】:2016-07-01 22:37:35 【问题描述】:

我一直在尝试将当前登录用户的 id 添加到我的数据库中的一个字段中。

但是,没有存储任何内容。我尝试了以下方法:

 public function store(StoreChildRequest $request)
    
    $user = Auth::user();
    $child = $request->all();
    $child->merge(['user_id' => $user->id]);
    $child = new Patient($child);
    $child->save();
    

但是StoreChildRequest总是返回user_id没有传递。

这也没用:

    public function store(StoreChildRequest $request)
    
    $user = Auth::user();
    Input::merge(['user_id' => $user->id]);
    $child = new Patient($request->all());
    $child->save();
    

同样的错误。

即使我尝试对固定数据执行此操作,合并也不会发生:

public function store(StoreChildRequest $request)

    $user = Auth::user();
    Input::merge(['user_id' => "01"]);
    if($child = new Patient($request->all()))
    
        $child->save();
        return response()->json(['succes' => 'Child saved.']);
    
    else
    
        return response()
        ->json($request->getMessageBag()->toArray());
    


编辑 我注意到,当我删除 StoreChildRequest(验证)时,代码工作得很好。所以我要添加规则:

StoreChildRequest:

public function rules()

    return [
            'name' => 'required|max:255',
            'givenname' => 'required|max:255',
            'street' => 'required|max:255',
            'streetnumber' => 'required|max:255',
            'city' => 'required|max:255',
            'postalcode' => 'required|digits:4',
            'email' => 'required|email',
            'birthdate' => 'required|date',
            'sex' => 'required|max:1',
            'user_id' => 'required'
    ];

那么错误就在这里?

感谢您的帮助。

【问题讨论】:

dd($user) 返回 User 对象对吗? 是的,确实如此。发生了一些奇怪的事情。如果我不使用 StoreChildRequest 验证代码,则代码可以工作......我将把我的 StoreChildRequest 添加到问题中。 如果这个请求是发布的,那么你的 $request->all();有csrf索引,这个字段不在你的表中。 我认为这不是问题所在。因为当我从 StoreChildRequest 中删除 'user_id' => 'required' 时,代码也可以正常工作(不关心 _token)。 您在post 中得到user_id 【参考方案1】:

你可以这样做:

$user = Auth::user();
$child = $request->all();
$child['user_id'] = $user->id;
$child = new Patient($child);
$child->save();

另外,你可以试试:

$user = Auth::user();
$request->request->add(['user_id' => $user->id]);
$child = $request->all();
$child = new Patient($child);
$child->save();

【讨论】:

这确实是正确的。但显然我的问题在于请求(而不是将 user_id 添加到数据中)。谢谢你的回答。

以上是关于Laravel 5:向 $request->all() 添加数据的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.8:验证多个输入

Laravel 5.1 Request请求怎么用?

$request->user() 在 Laravel 5.5 中返回 null

在Laravel 5.8中无法上传图片?

无法使用 $request->ajax() 和 Laravel 5.4 检查请求是不是为 ajax

登录Laravel 5.5