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

更新日期: 2017-10-24 阅读次数: 2957 分类: 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 的代码复制一份到项目中进行修改了。

爱评论不评论

近期节日

2019年08月23日 处暑
2019年09月03日 抗日胜利纪念日
2019年09月08日 白露
2019年09月08日 国际扫盲日
2019年09月10日 教师节
2019年09月13日 中秋节
2019年09月16日 国际臭氧层保护日
2019年09月16日 世界清洁地球日
2019年09月18日 "九一八"事变纪念日
2019年09月20日 国际爱牙日
2019年09月21日 国际和平日
2019年09月22日 世界无车日
查看更多节日