【问题标题】:Laravel 5: add data to $request->all()Laravel 5:向 $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 ?

标签: database laravel laravel-5 controller


【解决方案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 添加到数据中)。谢谢你的回答。
猜你喜欢
  • 2016-03-11
  • 1970-01-01
  • 2020-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-06
  • 2019-01-31
  • 2017-08-24
相关资源
最近更新 更多