修改 laravel backpack 的 search 功能以支持中文

更新日期: 2017-10-24 阅读次数: 3317 分类: Laravel

backpack 的搜索功能有个致命缺陷,即对 created_at,updated_at 进行 like 操作,这样会造成搜索中文关键词时出现异常

Illegal mix of collations for operation 'like'

解决过程

find . -name AjaxTable.php                                                                                                                                              ./vendor/backpack/crud/src/app/Http/Controllers/CrudFeatures/AjaxTable.php

但是这里没有 search 相关的逻辑。

继续搜索

./vendor/livecontrol/eloquent-datatable/src/LiveControl/EloquentDataTable/DataTable.php

可以看到几个 filter 函数,就是这里了。

思路

  • 新建一个 class 继承这个,然后覆盖 filter
  • CRUDController 的 search 方法中再替换该类

但是替换之后依然不生效,仔细一看,addFilters 居然是私有函数。。。 我就不明白了,为何会有私有函数这种奇葩的设计。。。

只能将 DataTable 的代码复制一份到项目中进行修改了。

关于作者

我是来自山东烟台的一名开发者,喜欢瞎折腾,顺便记记笔记。有敢兴趣的话题,欢迎加微信 zhongwei 聊聊。 白天工地搬砖,晚上哄熊孩子,可能回复有点慢,见谅。 查看更多联系方式

相关文章

爱评论不评论

近期节日

2019年12月20日 澳门回归日
2019年12月21日 国际篮球日
2019年12月22日 冬至
2019年12月24日 平安夜
2019年12月25日 圣诞节
查看更多节日