在 Laravel 项目中使用 DB 方法得到 DataTables 错误

Posted

技术标签:

【中文标题】在 Laravel 项目中使用 DB 方法得到 DataTables 错误【英文标题】:Using DB Method in Laravel project got DataTables error 【发布时间】:2022-01-03 11:20:43 【问题描述】:

我在 Laravel 项目中遇到错误,想使用 DB 方法调用数据库表。如何解决?

错误: DataTables 警告:table id=DataTables_Table_0 - Ajax 错误。有关此错误的更多信息,请参阅http://datatables.net/tn/7

这是控制器的代码

    public function index(Request $request)


    $title = 'Video Category List';

    if ($request->ajax()) 



        //$data = Category::where('type', 'Favourite')->get();
        $data = DB::table('action_status')
        ->where('type', 'Favourite')
        ->get(); 

        

        return Datatables::of($data)
            ->addIndexColumn()
            ->addColumn('name', function ($row) 
                return $row->name ?? '';
            )

            ->addColumn('image_path', function ($row) 
                return $row->image_path ?? '';
            )


            ->addColumn('status', function ($row) 
                if ($row->status == 1) 
                    return 'Active';
                 else 
                    return 'Inactive';
                
            )

            ->addColumn('action', function ($row) 
                $btn = '<button type="button"   onclick="selectid2(' . $row->id . ')"
                class="btn btn-success waves-effect waves-light"style="margin-right:10px"   data-toggle="modal" data-target="#updatecategory">
                <i class="fa fa-edit"></i>

                </button> ';
                $btn2 = '<button type="button"   onclick="delete(' . $row->id . ')"
                 class="btn btn-danger waves-effect waves-light"style="margin-right:10px"   data-toggle="modal" data-target="#">
                 <i class="fa fa-trash"></i>
                 </button>';
                return  $btn . '' . $btn2;

                // <i class="bx bx-pencil  font-size-16 align-right "   ></i>
            )


            ->rawColumns(['action'])
            ->make(true);
    

    return view('admin/videocategory/category', compact('title'));

【问题讨论】:

您需要检查网络选项卡以获取有关错误的更多信息 好的,我已经进入网络标签了,我想在这里复制粘贴什么? 是的,或者放屏幕截图 显示你的 ajax 请求 【参考方案1】:

您应该开始在 Laravel 中使用模型,并且由于您使用的是 DataTables,因此请改用 jquery 和 ajax。你的方法有点复杂。

此外,如果没有来自网络选项卡的其他信息,也很难调试问题,为此提供一个好的测试用例场景会很好。

【讨论】:

从网络选项卡我应该在这里提供什么信息,对不起,我是 Laravel 的新手 你能发一张网络标签的截图吗?也许你的哪条路线有公共功能 index(Request $request) ? 看到你的源代码,我相信它与列标题不匹配有关。从您的控制器的意思是,您使用 addColumn() 添加了一个列,其中列标题名称确实存在,也不与您的 html 表标题匹配。 添加更多信息,如文档链接,以便 OP 正确理解。

以上是关于在 Laravel 项目中使用 DB 方法得到 DataTables 错误的主要内容,如果未能解决你的问题,请参考以下文章

laravel 的DB::raw() 语法使用

laravel中使用model怎样得到指定字段信息

从 sqlite DB 登录 Laravel,得到“PDOException 找不到驱动程序”

当我使用 laravel 的 DB 外观进行简单连接时,我得到了与结果相同的行

Laravel Eloquent 支持 MariaDb 动态专栏

无法从 DB,Laravel 获取行