当前位置:首页 > CMS教程 > 其它CMS > 列表

Laravel多条件where查询语句使用详解

发布:smiling 来源: PHP粉丝网  添加日期:2023-10-16 18:18:59 浏览: 评论:0 

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

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

使用多条件的 where 语句

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

  1. $query = Product::newInstance(); 
  2. if ($request->color) { 
  3.     $query->whereColor($request->color); 
  4. if ($request->size) { 
  5.     $query->whereSize($request->size); 
  6. if ($request->orderBy && $request->sort) { 
  7.     $query->orderby($request->orderBy, $request->sort); 
  8. $products = $query->get(); 

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

  1. ...其他代码 
  2. if ($request->orderBy && $request->sort) { 
  3.     $query->orderby($request->orderBy, $request->sort); 
  4. else { 
  5.     $query->orderby('price''desc'); 
  6. ...其他代码 

使用条件性的 where 查询

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

  1. $products = Product::when($request->color, function ($queryuse ($request) { 
  2.     return $query->whereColor($request->color); 
  3. }) 
  4. ->when($request->size, function ($queryuse ($request) { 
  5.    return $query->whereSize($request->size); 
  6. }) 
  7. ->when($request->orderBy && $request->sort, function ($queryuse ($request) { 
  8.    return $query->orderBy($request->orderBy, $request->sort); 
  9. }) 
  10. ->get(); 

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

  1. ...其他代码 
  2. ->when($request->orderBy && $request->sort, function ($queryuse ($request) { 
  3.    return $query->orderBy($request->orderBy, $request->sort); 
  4. }, function ($query) { 
  5.    return $query->latest('price'); 
  6. }) 
  7. ...其他代码 

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

Tags: Laravel多条件 where查询语句

分享到: