Я пытаюсь обновить сводную таблицу approvals_document
с колонкой isApprove
, которая является дополнительной колонкой. Я использовал этот метод, чтобы он не дублировался в моей сводной таблице.Метод sync() для обновления сводной таблицы
Посмотреть
@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