我想更改任务的状态以完成。我在数据库中有一个status_id列,1等于完成。我想点击按钮将status_id更改为1
我的路线
Route::patch('/tasks/completed/{Task}', 'TasksController@completedUpdate')->name('completedUpdate');
我的按钮
<form action="{{ route('completedUpdate', $task->id) }}" method="POST">
{{ csrf_field() }}
{{ method_field('PATCH') }}
<button type="submit" class="button is-inverted" style="margin-top: 10px;">Mark Complete</button>
</form>
我的控制器
public function completedUpdate(Request $request, $task)
{
$task->status_id = $request->status_id;
$task->save;
return redirect()->back()->with('message', 'task marked complete');
}
它给我的错误是:
尝试分配非对象的属性
如果需要更多信息,请告诉我
答案 0 :(得分:1)
$task->save;
应为$task->save();
使用->save
,它正在模型上查找属性,因此错误消息是“分配属性”。而->save()
调用对象的save方法。
答案 1 :(得分:1)
你应该改变:
public function completedUpdate(Request $request, $task)
{
$task->status_id = $request->status_id;
$task->save;
return redirect()->back()->with('message', 'task marked complete');
}
成:
public function completedUpdate(Request $request, Task $task)
{
$task->status_id = $request->status_id;
$task->save();
return redirect()->back()->with('message', 'task marked complete');
}
因此您需要输入$ task变量的类型并使用save()
方法而不是save
属性。
也可能代替:
/tasks/completed/{Task}
你应该使用:
/tasks/completed/{task}
答案 2 :(得分:0)
在您的控制器中,您为"coop"
分配了$task->status_id
的值,但实际上您并未在HTML代码中传递表单中的status_id。您可以在表单中放置隐藏元素$request->status_id
。
同时,不要忘记<input name="status_id" value="1" />
必须是$task->save;