当我尝试上传图片时,HasOneOrMany.php第221行出现错误

时间:2016-09-16 17:17:00

标签: php laravel laravel-5 eloquent

我正在开发一个laravel项目,我想允许用户发布图片,但是我收到了这个错误:

  

HasOneOrMany.php第221行中的FatalThrowableError:类型错误:参数   1传递给   Illuminate \ Database \ Eloquent \ Relations \ HasOneOrMany :: save()必须是   Illuminate \ Database \ Eloquent \ Model的实例,没有给出,调用   我的状态控制器。

这是我的状态控制器代码:

class StatusController extends Controller {
public function postStatus(Request $request){
    $this->validate($request, [
        'status' => 'required|max:250',
        ]);
        Auth::user()->statuses()->create([
            'body' => $request->input('status'),
            ]);

    if($request->hasFile('image')){
        $image = $request->file('image');
        $filename = Auth::user()->username . time() . "." . $image->getClientOriginalExtension();
        Image::make($image)->fit(300,300)
            ->save(public_path("/uploads/images/" . $filename ));


        $statuses = Auth::user()->statuses();
        $statuses->image = $filename;
        $statuses->save();
    }


    return redirect()->route('home')->with('info', 'Status posted.');
}

在我的用户模型中,我有这个

    public function statuses() {
    return $this->hasMany('App\Models\Status', 'user_id');
}

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

执行此操作时:

$statuses = Auth::user()->statuses();

您会收到一系列状态。您不需要这样做,因为您在第6行创建了新状态。将您的代码更改为:

第6行:

$status = Auth::user()->statuses()->create([
    'body' => $request->input('status'),
]);

删除第16行:

$statuses = Auth::user()->statuses(); //Remove this line

并改变:

$status->image = $filename; //Note we changed the var name to the created above.
$status->save();