laravel orWhere
2024-09-01 10:19:44
场景描述
需要根据商品分类、商品名称和条形码这三个查询条件去取出结果集,这三者的关系是:商品分类 and (商品名称 or 条形码)
错误尝试
第一次写出来的代码是这样的:
$goodsModel = $goodsModel->where('name', 'like', "%{$keyword}%")->orWhere('barcode', 'like', "%{$keyword}%");
然后会发现这样的写法会导致三者的关系变成了:商品分类 and 商品名称 or 条形码。
建议使用 where 的闭包方式
这种方式将 or 部分写成 closure 传入 where()
,与 Eloquent 风格一致,可读性较好。代码如下:
DB::table('users')
->where('name', '=', 'John')
->where(function ($query)use ($votes)
{
$query->where('votes', '>', $votes
)
->orWhere('title', '<>', 'Admin');
})
->get();
原生
实在想不出怎么写,就写原生 SQL 好了。这也是最后一种保险但不提倡的做法了吧,代码如下:
$goodsModel = $goodsModel->whereRaw('(name like ? or barcode like ?)', [$keyword, $keyword]);
最新文章
- C++重载new和delete运算符
- 身份证校验(c++实现)
- GridView按钮事件
- spring事务配置的坑
- C primer plus 读书笔记第六章和第七章
- poj 3660 Cow Contest (传递闭包)
- linux环境变量入门
- Linux下将Apache(httpd)新增为系统服务及开机自启动
- pip和cmd常用命令
- mvc @html.action() 跨area调用controller 中的action
- Luogu2792 [JSOI2008]小店购物
- kubernetes yaml格式的Pod配置文件
- pandas DataFrame(2)-行列索引及值的获取
- NIO,AIO,BIO
- 霍夫曼编码(Huffman Coding)
- C#基础第三天-作业答案-集合-冒泡排序-模拟名片
- 页面返回刷新或H5监听(手机的)返回键
- 使用Maven简单配置Mybatis
- [洛谷P3376]【模板】网络最大流(ISAP)
- bzoj3669: [Noi2014]魔法森林 lct版