Почему не удалили пользователя в таблице в Laravel 5.6 - PullRequest
0 голосов
/ 30 ноября 2018

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

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

Ответы [ 5 ]

0 голосов
/ 30 ноября 2018

Я бы изменил ваш 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'); 
}
0 голосов
/ 30 ноября 2018

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

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

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

0 голосов
/ 30 ноября 2018

в вашем 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'); 
}
0 голосов
/ 30 ноября 2018

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

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>
0 голосов
/ 30 ноября 2018

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

User::destroy($id)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...