自从转了前端 就很少再碰后端的代码 SQL查询等也变得很不熟悉
这次帮师弟写一个软件杯的项目, 涉及到搜索,居然浪费了很多时间,实在不该,特地写下来当做一个教训,也当给自己记个笔记
业务情景描述
- 通过书籍的各种信息搜索书籍显示列表
- 分类对应列表
- 分类内搜索列表
解决问题的思路
限定图书分类 + 各种字段的like
本来是很简单的一个操作 结果给我写成了 全是 OR 查询 真想锤死我自己
通过花了点时间搜索 这边也顺便提一下 搜索的时候 搞懂自己想要查询的知识点 描述清楚自己的问题 列出重点关键词 是很重要的
否则就算你用 google
也不一定能找到你想要的东西 一开始把问题分析清楚 了解自己需要的 是很重要的
比如我刚刚遇到的问题 总结为一句话功能需求: laravel限定条件搜索
分词为: laravel 限定条件 搜索 (laravel condition + search)
google中文搜索结果为 第七条 PHP框架Laravel Eloquent ORM where 多条件查询- SegmentFault 用户 jefferywang
答案中含有符合了我想要的东西
google英文搜索结果为 第二条 laravel elequent query with multiple conditions based on user search/filter 标题符合预期 最后一条回答中提到
|
|
还很贴心的给了一个官方文档的高级where查询的链接
然后我对比中文的文档where查询 参数分组
推荐不熟悉英文的使用laravel-china
通过合理的分析问题 拆分搜索关键词(中英文都应该尝试) 从而找到了正确的解决方案
最终代码
|
|
从这次遇到的问题 以及解决时间上来说 证明了我
PHP
实在是太久没写了 生疏得连SQL
都懒得去思考了 却一开始就从框架层面找解决方案 更加理想的解决思路应该是先分析SQL
正常查询是怎样的 再去找框架对应的快捷方法 或者 不快捷? 反正就是解决问题的方案
路漫漫其修远兮 吾将上下而求索