引言
在使用 Laravel 开发应用的时候,还是会经常遇到多条件的查询语句,比如一个网站的商品筛选页面就有可能是这样子:
http://jd.com/products?color=black&size=xl&orderBy=price&sort=desc
使用多条件的 where 语句
这种方式的筛选其实我们就会使用多条件的 where 语句来做,比如我们通常会看到类似下面的代码:
1 2 3 4 5 6 7 8 9 10 11 | $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(); |
那如果说,你需要一个默认的排序结果的话,可以这样:
1 2 3 4 5 6 7 | ...其他代码 if ( $request ->orderBy && $request ->sort) { $query ->orderby( $request ->orderBy, $request ->sort); } else { $query ->orderby( 'price' , 'desc' ); } ...其他代码 |
使用条件性的 where 查询
然而如果说你使用条件性的 where 查询的话,可以这样:
1 2 3 4 5 6 7 8 9 10 | $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(); |
需要默认排序的情况则是这样:
1 2 3 4 5 6 7 | ...其他代码 ->when( $request ->orderBy && $request ->sort, function ( $query ) use ( $request ) { return $query ->orderBy( $request ->orderBy, $request ->sort); }, function ( $query ) { return $query ->latest( 'price' ); }) ...其他代码 |
到这里就可以解决 Laravel 的多条件查询了!
以上就是Laravel多条件where查询语句使用详解的详细内容,更多关于Laravel多条件where查询的资料请关注IT俱乐部其它相关文章!