zoukankan      html  css  js  c++  java
  • laravel orWhere

    场景描述

    需要根据商品分类、商品名称和条形码这三个查询条件去取出结果集,这三者的关系是:商品分类 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# 读取数据库得到dateset
    c# 读数据库二进制流到图片
    c# 读取数据库得到字符串
    c#打开颜色对话框
    WinForm-GridView
    arcengine 常用方法
    arcgis engine 调用arcgis server服务
    ae
    ae保存图层
    ae 打开地图文档
  • 原文地址:https://www.cnblogs.com/niuben/p/12333043.html
Copyright © 2011-2022 走看看