Laravel 5.5控制器更新功能问题

时间:2018-05-09 10:42:22

标签: laravel laravel-5

我在控制器中有更新功能,我想存储表单的值。这是代码;

public function update(Request $request, $id=1){
        $data = array(); 

        $data->firstName = $request->get('firstName');
        $data->lastName  = $request->get('lastName');
        $data->email     = $request->get('email');
        $data->company   = $request->get('company');
        $data->website   = $request->get('website');
        UserAdmin::where('id', Auth::user()->id)->update($data);

        //return view('Administrator.profile.profile',$data);
        return redirect('administrator/myprofile');
    }

但是,在提交表单后,它会显示错误;

  

尝试分配非对象的属性

2 个答案:

答案 0 :(得分:3)

那是因为你can't assign array values with $data->key。数组不是对象,因此具有不同的语法。

然而,这将工作:

public function update(Request $request, $id=1){
    $data = array(); 

    $data['firstName'] = $request->get('firstName');
    $data['lastName'] = $request->get('lastName');

    // etc
}

答案 1 :(得分:1)

您正尝试在阵列上使用对象运算符( - >)。

对于您要实现的目标,最好将该模型用于您的优势。通过使用 findOrFail(),您可以返回一个对象。

public function update(Request $request, $id=1){

    $data = UserAdmin::findOrFail(Auth::id());
    $data->firstName = $request->get('firstName');
    $data->lastName  = $request->get('lastName');
    $data->email     = $request->get('email');
    $data->company   = $request->get('company');
    $data->website   = $request->get('website');
    $data->save();

    //return view('Administrator.profile.profile',$data);
    return redirect('administrator/myprofile');
}

这将实现您想要的但更清洁。 查看Laravel Eloquent Documentation here