【问题标题】:Laravel Not Delete recordLaravel 不删除记录
【发布时间】:2025-07-12 13:20:01
【问题描述】:

我正在使用 laravel 来构建我的 php 项目。我可以成功从数据库中检索数据,但按下删除按钮时无法删除记录,我尝试使用 ajax 删除记录,所以这是我的 ajax 代码

$('.userdelete').on('click', function () {
    alert('dfsfs');
    var id = $(this).data('id');
    $.ajax({
        type: 'DELETE',
        url: '/users/' + id,
        data: {
            '_token': $('input[name=_token]').val(),
        },
        success: function (data) {
            alert(data);
            toastr.success('Successfully deleted Post!', 'Success Alert', {timeOut: 5000});
            $('.item' + data['id']).remove();
        },
        error: function (data) {
            console.log(data);
        }
    });
});

这是路线

Route::resource('users','radcheckController');

用户模型

namespace App;

use Illuminate\Database\Eloquent\Model;

class Users extends Model
{
    protected $table="radcheck";
}

这是控制器的销毁函数

public function destroy($id)
{
    $res = Users::where('username', $id)->delete();
}

【问题讨论】:

  • 你使用的是什么版本的 Laravel?
  • 你需要修复,将_method: 'delete'添加到ajax中的数据
  • 你能告诉我们错误吗?你在 ajax 中传递 CSRF Token 吗?
  • 如果你使用 $id 作为主键,使用 User::find($id)->delete()
  • 这是错误 DELETE localhost:8000/users/10966417880 500 (Internal Server Error)

标签: laravel laravel-5 eloquent laravel-query-builder


【解决方案1】:

您需要指定正确的列,但您没有选择一个。使用findfindOrFail$id 或使用first()。 正确的做法是:

public function destroy($id)

{
    $res = Users::find($id);
    $res->delete();
}

或尝试:

public function destroy($id)
{
    $res = Users::where('username', $id)->first()->delete();
}

【讨论】:

  • 这是错误信息 DELETE localhost:8000/users/10966417880 500 (Internal Server Error)
  • 我们的控制器是对的。没有问题。我们只是无法连接到路线。不要使用资源。使用 Route::delete 创建自己的路线。
  • 我删除了destroy的代码并插入其中 echo $id 和代码返回正确的值。所以我们可以访问路线
【解决方案2】:

您是否将 id 或用户名传递到端点? 因为在你的控制器上你正在寻找一个用户名,参数被命名为 id,对吗?

【讨论】: