资讯专栏INFORMATION COLUMN

Laravel 多条件 where 查询语句

sanyang / 2443人阅读

摘要:在使用开发应用的时候,还是会经常遇到多条件的查询语句,比如一个网站的商品筛选页面就有可能是这样子这种方式的筛选其实我们就会使用多条件的语句来做,比如我们通常会看到类似下面的代码那如果说,你需要一个默认的排序结果的话,

在使用 Laravel 开发应用的时候,还是会经常遇到多条件的查询语句,比如一个网站的商品筛选页面就有可能是这样子:

http://jd.com/products?color=black&size=xl&orderBy=price&sort=desc

这种方式的筛选其实我们就会使用多条件的 where 语句来做,比如我们通常会看到类似下面的代码:

$query = Product::newInstance();
 
if ($request->color) {
    $query->whereColor($request->color);
}
 
if ($request->size) {
    $query->whereSize($request->size);
}
 
if ($request->orderBy && $request->sort) {
    $query->orderby($request->orderBy, $request->sort);
}
 
$products = $query->get();

那如果说,你需要一个默认的排序结果的话,可以这样:

...其他代码
if ($request->orderBy && $request->sort) {
    $query->orderby($request->orderBy, $request->sort);
} else {
    $query->orderby("price", "desc");
}
...其他代码

然而如果说你使用条件性的 where 查询的话,可以这样:

$products = Product::when($request->color, function ($query) use ($request) {
    return $query->whereColor($request->color);
})
->when($request->size, function ($query) use ($request) {
   return $query->whereSize($request->size);
})
->when($request->orderBy && $request->sort, function ($query) use ($request) {
   return $query->orderBy($request->orderBy, $request->sort);
})
->get();

需要默认排序的情况则是这样:

...其他代码
->when($request->orderBy && $request->sort, function ($query) use ($request) {
   return $query->orderBy($request->orderBy, $request->sort);
}, function ($query) {
   return $query->latest("price");
})
...其他代码

到这里就可以解决 Laravel 的多条件查询了!

双十一关注公众号 codecasts 即送 100 元订阅优惠劵的活动还有效!CODECASTS 支持 ETC BTC等电子购买订阅会员啦!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/17635.html

相关文章

  • Laravel Query Builder 复杂查询案例:子查询实现分区查询 partition b

    摘要:案例案例在文章列表中附带上前条评论,在获取文章列表时同时把每个文章的前条评论一同查询出来。这是典型分区查询案例,需要根据表中的字段进行分区,同时根据条件进行排序,把符合条件的前条是数据取出来。查询语句中定义变量以及函数的使用如何构建子查询。 案例 案例:Laravel 在文章列表中附带上前10条评论?,在获取文章列表时同时把每个文章的前10条评论一同查询出来。 这是典型分区查询案例,需...

    littleGrow 评论0 收藏0
  • 【整理】Laravel 中Eloquent ORM 相关操作

    摘要:软删除当模型被软删除后,它们并没有真的从数据库删除,而是在模型上设置一个属性并插入数据库,如果模型有一个非空值,那么该模型已经被软删除了。 Laravel 中Eloquent ORM 相关操作 定义 操作 获取(查询) 获取集合,(查询列表) 返回值是 IlluminateDatabaseEloquentCollection 的一个实例 获取所有的数据 use AppUser; $us...

    dongfangyiyu 评论0 收藏0
  • Laravel & Lumen 数据库操作速查

    摘要:在中执行数据库操作有两种方式,一种是使用外观对象的静态方法直接执行查询,另外一种是使用类的静态方法实际上也是的实现,使用静态访问方式访问的方法,内部采用了魔术方法代理了对成员方法的访问。在闭包函数中,如果返回,则会停止后续的处理。 在Laravel中执行数据库操作有两种方式,一种是使用DB外观对象的静态方法直接执行sql查询,另外一种是使用Model类的静态方法(实际上也是Facade...

    用户83 评论0 收藏0
  • 写一个“特殊”的查询构造器 - (四、条件查询:复杂条件)

    摘要:复杂的条件在的条件查询中,不只有这些基本的子句,还有等复杂一些的子句。这篇我们就来讲一下查询构造器如何构造这些复杂的查询语句。 复杂的条件 在 SQL 的条件查询中,不只有 where、or where 这些基本的子句,还有 where in、where exists、where between 等复杂一些的子句。而且即使是 where 这种基础的子句,也有多个条件的多种逻辑组合。这篇...

    baoxl 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<