Laravel 不删除记录

Posted

技术标签:

【中文标题】Laravel 不删除记录【英文标题】:Laravel Not Delete record 【发布时间】:2018-11-08 01:22:10 【问题描述】:

我正在使用 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) 【参考方案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,对吗?

【讨论】:

我通过了用户名 DELETE localhost:8000/users/10966417880 500(内部服务器错误)

以上是关于Laravel 不删除记录的主要内容,如果未能解决你的问题,请参考以下文章

在laravel中不使用表单删除记录

Laravel Ajax 使用按钮删除记录

Laravel 查询包括软删除的记录

使用 AJAX 在 Laravel 5.3 中删除记录

laravel 中删除多条记录

laravel 无法删除记录