2016-09-17 2 views
1

Я пытаюсь обновить сводную таблицу 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); 
} 
+0

Вы можете отправить маршрут, который называет этот метод – jaysingkar

+0

@jaysingkar Здравствуйте! Я обновил свой пост, пожалуйста, посмотрите. – Francisunoxx

+0

Параметр '$ id' в вашем методе не передается из маршрута, так как он не имеет параметра. Попробуйте удалить $ id из списка аргументов метода. – jaysingkar

ответ

1

Удалить $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(); 
} 
+0

Зачем мне удалять '$ id' в моем параметре? Я попробовал ваше решение, но он говорит 'Invalid аргумент для foreach()' – Francisunoxx

+0

для '$ id' для работы, вам нужно добавить параметр к вашему маршруту, например' '/ documents/pending/{id}' ', и обновить Действие формы 'action = {{route ('documents/pending', [$ list-> id])}}" ' – jaysingkar

+0

btw,' Недопустимый аргумент, предоставленный foreach() 'не из-за id, статус' $ 'не является массивом, а также вы переписываете его в каждом для каждого. – jaysingkar

Смежные вопросы