我正在开发一个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');
}
有什么建议吗?
答案 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();