mysql - laravel sql问题与查询where和or,丢失条件
问题描述
我试图在 laravel 中编写 sql 查询:
select * from products where deleted=0 AND
(('name_ru','LIKE', '%' . $request->q_search . '%')
OR ('name_en','LIKE', '%' . $request->q_search . '%')
OR ('name_lv','LIKE', '%' . $request->q_search . '%'))
我现在有:
$products = DB::table('product')
->select('id','name_lv', 'name_ru', 'name_en','price','desc')
->where('deleted',0)
->where('name_lv','LIKE', '%' . $request->q_search . '%')
->orWhere('name_ru','LIKE', '%' . $request->q_search . '%')
->orwhere('name_en','LIKE', '%' . $request->q_search . '%')
->distinct()
->orderBy('price', 'desc')
->paginate(10,['*'], 'found')
->onEachSide(6);
我的问题是条件已删除 = 0,我的 sql 忽略了它。怎么了?谢谢你的建议!
解决方案
你可以照常 where(function(){})
使用where AND (.. OR ..)
$products = DB::table('product')
->select('id', 'name_lv', 'name_ru', 'name_en', 'price', 'desc')
->where(function ($q) use ($request) {
$q->where('name_lv', 'LIKE', '%' . $request->q_search . '%')
->orWhere('name_ru', 'LIKE', '%' . $request->q_search . '%')
->orwhere('name_en', 'LIKE', '%' . $request->q_search . '%');
})
->where('deleted', 0)
->distinct()
->orderBy('price', 'desc')
->paginate(10, ['*'], 'found')->onEachSide(6);
推荐阅读
- hyperledger-sawtooth - 如何修改 Sawtooth 渔网网站并查看日志?
- javascript - 无法为新的空活动解析资源文件 - Android
- javascript - Nunjucks:从 for 循环中的数组中选择特定项目
- amazon-web-services - 通过 AWS 安全 Web 服务防止“点击劫持”又名“UI 补救攻击”
- java - 显示字符在字符串中出现的次数
- php - WordPress ajax 请求不断返回 0(包括 wp_die())
- node.js - 为什么`sudo npm uninstall htmlhint -g`没有从`node_modules`中删除`htmlhint`文件夹?不工作?
- python-3.x - 成对的相似代码会产生由“except”语句引起的不同结果
- c++ - 将函数指针传递给模板类
- scala - 我想用一组关键词过滤 Lines read form 文本文件