Sync()方法更新数据透视表


Sync() method to update pivot table

我试图更新我的数据透视表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'DocumentController@documentsSentForApproval',
   'as' => 'document.pending',
]);
Route::post('/documents/pending',
[
   'uses' => ''App'Http'Controllers'DocumentController@updateApprovalsDocument',
    'as' => 'document.pending',
]);
误差

Missing argument 2 for App'Http'Controllers'DocumentController::updateApprovalsDocument()

但是我已经在我的参数中定义了$idRequest $request,并在顶部导入了use Illuminate'Http'Request;,我如何解决这个问题?

更新视图

<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);
}

$id从方法的参数列表中删除

public function updateApprovalsDocument(Request $request)
{
    $id = $request->get('id');
    $document = DB::table('approvals_document')
        ->where('approvals_document.id', '=', $id)
        ->update(['isApprove' => $request->status, 'updated_at' => new DateTime]]);
    return redirect()->back();
 }