Почему не удалили пользователя в таблице в Laravel 5.6

Я работаю с 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

как я могу исправить эту проблему?

Это ваша проблема users?16/delete/. Обратите внимание на ?

nice_dev 30.11.2018 12:16

да, это моя проблема

Muru 30.11.2018 12:25
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
904
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Вы можете попробовать метод уничтожения, например

User::destroy($id)

метод удаления также работает по маршруту как: Route :: delete ('users / delete / {users}', '\ App \ Http \ Controllers \ UserController @ delete');

PHP Geek 30.11.2018 12:34

Что это значит? Как он отвечает на вопрос? Не просто выпаливайте код. Объяснись! stackoverflow.com/help/how-to-answer

Rob 30.11.2018 12:40
Ответ принят как подходящий

в вашем файле маршрутов 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'); 
}

такой же результат здесь? Обратите внимание: Мои маршруты в кнопках удаления, это правильно? Мой маршрут?

Muru 30.11.2018 12:24

Измените свой маршрут на:

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 30.11.2018 12:38

@Muru Исправлена ​​опечатка. Поменял 'as' => 'user.delete' на 'as' => 'users.delete'. Попробуй сейчас.

nice_dev 30.11.2018 13:18

Измените свой маршрут на:

Route::get('users/{id}/delete', [
    'uses' => '\App\Http\Controllers\UserController@delete',
]);

затем проверьте свою таблицу базы данных, был ли удален пользователь или нет. если нет, то я думаю, что это нарушение CI в вашей БД, потому что идентификатор пользователя является внешним ключом в другой таблице, вы не можете просто удалить его.

сделал это, но с такими же результатами. мой маршрут кнопок удаления правильный?

Muru 30.11.2018 12:27

Не могли бы вы предоставить схему своей БД?

Lamine Kessoum 30.11.2018 12:48

Я бы изменил ваш 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'); 
}

Другие вопросы по теме