我試圖更新我的數據透視表approvals_document
列isApprove
這是一個額外的列。我使用這種方法,所以它不會在我的數據透視表中重複。同步()方法更新數據透視表
查看
@foreach ($pendingDocuments as $list)
<form class = "form-inline" id="submitMe" method = "post" action = "{{ url('documents/pending') }}">
<input type = "hidden" name = "id" value = "{{ $list->id }}">
<div class = "radio">
<label><input type = "radio" onclick = "showApprove()" name = "status" value = "1"> Approve</label>
</div>
<div class = "radio">
<label><input type = "radio" onclick = "showReject()" name = "status" value = "2"> Reject</label>
</div>
<input type = "hidden" name = "_token" value = "{{ Session::token() }}">
</form>
@endforeach
控制器
public function updateApprovalsDocument(Request $request, $id)
{
$document = DB::table('approvals_document')
->select('approvals_document.id', 'approvals_document.isApprove')
->where('approvals_document.id', '=', $id)
->first();
foreach($request->status as $status)
{
$document->sentToApprovers()->sync([$status => ['isApprove' => $request->status, 'updated_at' => new DateTime]], true);
}
return redirect()->back();
}
$status
這裏是在我看來,單選按鈕的名稱。我需要在這裏使用first()
方法來使用單選按鈕更新我的記錄嗎?
路線
Route::get('/documents/pending',
[
'uses' => '\App\Http\Controllers\[email protected]',
'as' => 'document.pending',
]);
Route::post('/documents/pending',
[
'uses' => '\App\Http\Controllers\[email protected]',
'as' => 'document.pending',
]);
錯誤
Missing argument 2 for App\Http\Controllers\DocumentController::updateApprovalsDocument()
但我已經定義我的參數$id
和Request $request
和進口頂部的use Illuminate\Http\Request;
任何幫助,我該如何解決這個問題?
UPDATE
查看
<form class = "form-inline" id="submitMe" method = "post" action = "{{ route('documents/pending',['id' => [$list->id]]) }}">
<div class = "radio">
<label><input type = "radio" onclick = "showApprove()" name = "status" value = "1"> Approve</label>
</div>
<div class = "radio">
<label><input type = "radio" onclick = "showReject()" name = "status" value = "2"> Reject</label>
</div>
<input type = "hidden" name = "_token" value = "{{ Session::token() }}">
</form>
控制器
public function updateApprovalsDocument(Request $request)
{
$id = $request->get('id'); //add this to get the id
$document = DB::table('approvals_document')
->select('approvals_document.id', 'approvals_document.isApprove')
->where('approvals_document.id', '=', $id)
->first();
$document->sentToApprovers()->sync([$request->status => ['isApprove' => $request->status, 'updated_at' => new DateTime]], true);
}
你能不能發佈調用這個方法的路由 – jaysingkar
@jaysingkar你好!我更新了我的帖子,請看。 – Francisunoxx
您的方法中的'$ id'參數沒有從路由傳遞,因爲它沒有參數。嘗試從您的方法的參數列表中刪除$ id。 – jaysingkar