如何将数据库索引与 Datatables 和 yajra/laravel-datatables 一起使用

Posted

技术标签:

【中文标题】如何将数据库索引与 Datatables 和 yajra/laravel-datatables 一起使用【英文标题】:How to use DB indexes with Datatables and yajra/laravel-datatables 【发布时间】:2016-10-05 15:03:05 【问题描述】:

到目前为止,当我尝试列过滤时,我可以使用 LIKE 或 REGEXP,但它们都在使用表索引,考虑到我需要过滤的数据量,这是一个很大的问题。

有没有办法使用索引获得完全匹配? (数据库索引)

我正在使用: https://github.com/yajra/laravel-datatables v6.11.3 和 https://datatables.netv1.10.10

【问题讨论】:

你试过这个***.com/questions/9580647/… 谢谢,但这是不同的,我的问题是关于数据表的。我想使用 yajra/laravel-datatables 实现的是使用精确匹配而不是像“%search%”或 REGEXP 那样按列搜索。我的目标是使用我的表索引来避免全表扫描。 【参考方案1】:

使用 datatables laravel 包,您可以使用“filterColumn”功能在查找功能中自定义 laravel 端的参数搜索。像这样:

    return Datatables::of($users)
        ->filterColumn('user_id', function($query, $keyword) 
            $query->whereRaw("CONCAT(users.id,'-',users.id) like ?", ["%$keyword%"]);
        )
        ->make(true);

在Documentation中查看更多信息

【讨论】:

以上是关于如何将数据库索引与 Datatables 和 yajra/laravel-datatables 一起使用的主要内容,如果未能解决你的问题,请参考以下文章

如何从 DataTables 中的选定数据中获取数据

将 Ajax 与 jQuery DataTables 一起使用时,如何确定如何处理返回的数据?

Django:模型和视图以及 jQuery DataTables,hello world 示例

将 DataTables 插件与 django 框架集成

ADO.Net DataTables 有索引吗?

如何将过滤器和订单数据设置到 DataTables 单元格