获得一个具有__contruct
函数的资源控制器来声明$project
public function __construct(Project $project){
$this->project = $project;
}
然后我有一个update
和一个destroy
函数,给出一个Call to a member function delete() on a non-object
(or update()
error)
public function edit($id)
{
$project = $this->project->find($id);
return view('project.edit', ['project' => $project, 'id' => 'edit']);
}
public function update(CreateProjectRequest $request, $project)
{
$project->fill($request->input())->save();
return redirect('project/index');
}
public function destroy($project)
{
$project->delete();
return redirect('project');
}
我做错了什么?
$project
在本例中只是项目的id。你必须先加载它:
public function destroy($projectId)
{
$project = $this->project->findOrFail($projectId);
$project->delete();
return redirect('project');
}
或者直接使用以键为参数的destroy
方法:
public function destroy($projectId)
{
$this->project->destroy($projectId);
return redirect('project');
}
您可能还想查看路由模型绑定,以便从DB中自动获取模型。