У меня есть форма загрузки, из которой администратор может загружать различные документы. Цель состоит в том, чтобы в таблице был только один активный документ.
Итак, администратор загружает новый документ, который затем помечается как активный. Через несколько дней он может загрузить еще один, который по умолчанию неактивен. Если администратор делает второй документ активным, то первый должен стать неактивным.
Это то, что я имею до сих пор.
Маршрут для обновления
Route::post('/admin/media/{media}', 'Admin\MediaController@completedUpdate')->name('completedUpdate');
Вид с помощью кнопок
<td>@if($value->status == 1)
<form action="{{ route('completedUpdate', $value->id) }}" method="POST">
{{ csrf_field() }}
<button type="submit" class="btn btn-success" name="changeStatus" value="0">Active</button>
</form>
@else
<form action="{{ route('completedUpdate', $value->id) }}" method="POST">
{{ csrf_field() }}
<button type="submit" class="btn btn-default" name="changeStatus" value="1">Inactive</button>
</form>
@endif
</td>
И функция в контроллере
public function completedUpdate(Request $request, Mediakit $media)
{
$data = DB::table('media')->get();
foreach($data as $media) {
if ( $media->status == 1 ) {
DB::table('media')->update(['status', 0]);
}
}
$media->status = $request->changeStatus;
$media->save();
return redirect()->back()->with('message', 'Status changed!');
}
Текущая ошибка
SQLSTATE [42S22]: столбец не найден: 1054 Неизвестный столбец «0» в «списке полей» (SQL: обновление media
набор 0
= статус, 1
= 0)
Я даже не уверен, что функция должна быть такой. Что мне сложно сделать, так это щелкнуть по кнопке, чтобы выбрать все записи, зациклить их и обновить все до 0 (inactive)
, затем изменить только нажатую на 1(active)
.