Я работаю с Laravel 5.6 и перехожу пользователей delete из таблицы пользователей в качестве администратора. У меня есть следующая функция UserController для удаления записей таблицы?
public function delete($id)
{
User::where('id', $id)->delete();
return redirect()
->back()
->with('info', 'User deleted successfully');
}
и данные о моих пользователях, отображаемые в индексном файле лезвия с заключительными кнопками удаления, такими как:
<td>
<a class = "button is-outlined"
href = "{{route('users.index', $user->id.'/delete/')}}"
onclick = "return confirm('Are you sure to want to delete this record?')"
>
Delete
</a>
</td>
и мой маршрут удаления такой,
Route::get('users/{users}/delete', [
'uses' => '\App\Http\Controllers\UserController@delete',
]);
но теперь, когда приходит подтверждение Я нажимаю кнопку удаления javascript, и после принятия он все еще не удаляет записи. URL меняется так:
http://localhost:8000/users?16/delete/ //16 is user id
как я могу исправить эту проблему?
да, это моя проблема






Вы можете попробовать метод уничтожения, например
User::destroy($id)
метод удаления также работает по маршруту как: Route :: delete ('users / delete / {users}', '\ App \ Http \ Controllers \ UserController @ delete');
Что это значит? Как он отвечает на вопрос? Не просто выпаливайте код. Объяснись! stackoverflow.com/help/how-to-answer
в вашем файле маршрутов web.php вы передали {users}, вместо этого передали {id}:
Route::get('users/{id}/delete', [
'uses' => '\App\Http\Controllers\UserController@delete',
])->name('user.delete');
в вашем виде лезвия:
<td><a class = "button is-outlined" href = "{{route('users.delete',['id' => $user->id])}}" onclick = "return confirm('Are you sure to want to delete this record?')" >Delete</a></td>`
в вашем контроллере:
public function delete($id)
{
User::where('id', $id)->delete();
// or you can use User::destroy($id);
return redirect()->back()->with('info', 'User deleted successfully');
}
такой же результат здесь? Обратите внимание: Мои маршруты в кнопках удаления, это правильно? Мой маршрут?
Измените свой маршрут на:
Route::get('users/{id}/delete', [
'as' => 'users.delete','uses' => '\App\Http\Controllers\UserController@delete',
]);
Измените строку ниже:
<td><a class = "button is-outlined" href = "{{route('users.index', $user->id.'/delete/')}}" onclick = "return confirm('Are you sure to want to delete this record?')" >Delete</a></td>
К
<td><a class = "button is-outlined" href = "{{route('users.delete',['id' => $user->id])}}" onclick = "return confirm('Are you sure to want to delete this record?')" >Delete</a></td>
теперь получил эту ошибку msg Маршрут [users.delete] не определен. (Вид: C: \ Users \ Nalaka \ Desktop \ acxian \ resources \ views \ users \ index.b lade.php)
@Muru Исправлена опечатка. Поменял 'as' => 'user.delete' на 'as' => 'users.delete'. Попробуй сейчас.
Измените свой маршрут на:
Route::get('users/{id}/delete', [
'uses' => '\App\Http\Controllers\UserController@delete',
]);
затем проверьте свою таблицу базы данных, был ли удален пользователь или нет. если нет, то я думаю, что это нарушение CI в вашей БД, потому что идентификатор пользователя является внешним ключом в другой таблице, вы не можете просто удалить его.
сделал это, но с такими же результатами. мой маршрут кнопок удаления правильный?
Не могли бы вы предоставить схему своей БД?
Я бы изменил ваш route.php file на гораздо более простой подход, который помогает понять:
Route::get('users/{id}/delete', 'UserController@delete')
->where(['id', => '[0-9]+'])
->name('user.delete');
На указанном выше маршруте вы уже убедитесь, что он принимает только запросы, в которых id является числом. Также вы называете свой маршрут для упрощения структуры кода, поэтому, если вы измените его позже, вам не нужно продолжать и изменять его в своих формах.
Затем создание маршрута в вашей форме также изменит его:
href = "{{route('user.delete', ['id' => $user->id])}}"
И в вашем контроллере изменится на
public function delete($id)
{
$user = User::find($id);
//Having a hold on your user model makes it able to also delete any other relationship it might have, if you so wish
$user->delete();
return redirect()
->back()
->with('info', 'User deleted successfully');
}
Это ваша проблема
users?16/delete/. Обратите внимание на?