Laravel 单击按钮时更改数据库列
Laravel Change database column when button is clicked
我想更改任务的完成状态。我在数据库中有一个 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');
}
它给我的错误是:
Attempt to assign property of non-object
如果需要更多信息,请告诉我
$task->save;
应该是 $task->save();
使用 ->save
,它正在模型上寻找 属性,因此错误消息重新 'assigning a property'。而 ->save()
调用对象的保存方法。
在您的控制器中,您为 $task->status_id
分配了 $request->status_id
的值,但实际上您并没有在 HTML 的表单中传递 status_id代码。您可以在表单中放置一个隐藏元素 <input name="status_id" value="1" />
.
同时,不要忘记$task->save;
必须是$task->save();
祝你好运!
你应该改变:
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}
我想更改任务的完成状态。我在数据库中有一个 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');
}
它给我的错误是:
Attempt to assign property of non-object
如果需要更多信息,请告诉我
$task->save;
应该是 $task->save();
使用 ->save
,它正在模型上寻找 属性,因此错误消息重新 'assigning a property'。而 ->save()
调用对象的保存方法。
在您的控制器中,您为 $task->status_id
分配了 $request->status_id
的值,但实际上您并没有在 HTML 的表单中传递 status_id代码。您可以在表单中放置一个隐藏元素 <input name="status_id" value="1" />
.
同时,不要忘记$task->save;
必须是$task->save();
祝你好运!
你应该改变:
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}