Я пытаюсь обновить сводную таблицу approve_document, где у него есть дополнительная колонка isApprove
с использованием метода ->withPivot
.updateExistingPivot не работает
Модель:
Документ
class Document extends Model
{
public function sentToApprovers()
{
return $this->belongsToMany('App\Models\Approve', 'approve_document')->withPivot('isApprove');
}
}
Утвердить
class Approve extends Model
{
public function createdpendingDocuments()
{
return $this->belongsToMany('App\Models\Document', 'approve_document')->withPivot('isApprove');
}
}
Это где я получаю все мои записи в моей approve_document.
Контроллер:
public function documentsSentForApproval()
{
$pendingDocumentLists = DB::table('approve_document')
->select('documents.title', 'documents.content', 'categories.category_type', 'users.username', 'approve_document.dateReceived', 'documents.id', 'approves.approver_id')
->join('documents', 'documents.id', '=', 'approve_document.document_id')
->join('categories', 'categories.id', '=', 'documents.category_id')
->join('approves', 'approves.id', '=', 'approve_document.approve_id')
->join('users', 'users.id', '=', 'approves.approver_id')
->where('approver_id', '=', Auth::id())
->orWhere('requestedBy', '=', Auth::id())
->get();
return view ('document.pending')
->with('pendingDocumentLists', $pendingDocumentLists);
}
Вид:
@foreach ($pendingDocumentLists as $list)
<tr class = "info">
<td>{{ $list->title }}</td>
<td>{{ strip_tags(substr($list->content, 0, 50)) }} {{ strlen($list->content) > 50 ? "..." : '' }}</td>
<td>{{ $list->category_type }}</td>
<td>{{ $list->username }}</td>
<td>{{ date('M, j, Y', strtotime($list->dateReceived)) }}</td>
<td>
@if (Auth::id() == $list->approver_id)
<a href = "{{ route ('document.pending', $list->id) }}">
<button type = "submit" class = "btn btn-success glyphicon glyphicon-thumbs-up"> Approve</button>
</a>
@endif
</td>
<td></td>
</tr>
@endforeach
Вы можете увидеть здесь у меня есть кнопка одобрять, где мне нужно установить isApprove
истину, когда кнопка нажата. Вы можете видеть, что я получаю текущий идентификатор документа при нажатии кнопки.
Эта часть контроллера, с которой мне трудно обновлять сводную таблицу. Это дает мне ошибку MethodNotAllowedHttpException
. Любые советы или помощь были бы очень признательны!
public function updateIsApprove($id)
{
$document = new Document();
foreach ($document as $update)
{
$approve = new Approve();
$document->sentToApprovers()->updateExistingPivot([$approve->id => ['isApprove' => '1']],false);
}
return redirect()->route('document.pending');
}
маршруты:
Route::post('/documents/pending/approve/{id}',
[
'uses' => '\App\Http\Controllers\[email protected]',
'as' => 'document.pending',
]);
Возможно ли это? Я ничего не нашел в документации Laravel. – Francisunoxx
Требуется. Посмотрите на мой пример: $ comany-> members() -> updateExistingPivot ($ member-> id, ['is_admin' => true]); – Vuer
Я не видел ничего плохого с вашим кодом, но я пробовал следовать, но ничего не происходит, он не обновляется в моей сводной таблице. – Francisunoxx