Здравствуйте, друзья, пользователи StackOverflow!
Я пытаюсь удалить запись из базы данных с помощью функции уничтожения, но она возвращает нулевое значение. Я думаю, это как-то связано с тем, что я использую реляционную модель.
Club_info.blade.php:
@foreach ($speler as $s)
<tr>
<td>{{$s->speler_naam}}
<a href = "{!! url()->current() !!}/delete/{{$s->id}}">×</a>
</td>
</tr>
@endforeach
Файл маршрутов:
Route::get('/view/{naam}/delete/{id}', 'VoetbalController@destroy');
Контроллер:
public function destroy($id)
{
$speler = Speler::where('id', $id)->delete();
$speler->delete();
}
Модель:
public function speler()
{
return $this->belongsTo('App\Speler', 'naam', 'club_naam');
}
Не по теме, старайтесь избегать использования запроса GET для удаления. Возможно, браузеры предварительно загружают этот URL-адрес, возможно, даже при наведении курсора. Не лучший вариант, когда записи исчезают без каких-либо действий пользователя. По той же причине Laravel изменил запрос выхода из системы на POST.






Вы передаете 2 переменные naam и id.
Таким образом, $id в вашей функции destroy автоматически принимает значение вашего первого параметра {naam}. Вам нужно добавить 2 параметра в вашу функцию destroy в контроллере.
И вы дважды назвали метод delete().
Измените функцию вашего контроллера на
public function destroy($naam, $id)
{
$speler = Speler::where('id', $id)->delete();
}
Если в вашей маршрутизации нет магической логики, значит, в вашей функции уничтожения отсутствует переменная $naam.
Вы удаляете удаление, поэтому второе удаление не требуется.
public function destroy($naam, $id)
{
Speler::where('id', '=', $id)->delete();
}
$speler = Speler::where('id', $id)->delete();этот фрагмент уже удаляет запись, тогда нет необходимости вызывать$speler->delete();