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 聊聊, 查看更多联系方式