whereBetween传递值和null

时间:2018-02-10 10:56:43

标签: php mysql laravel-5 laravel-eloquent

我有一个雄辩的查询,我传递一个值并在其中为null。例如,如果我有价格列,并且我有两个变量$to$from

示例$from = 10 $to= ""

$from = 10;
$to = "";  
Product::whereBetween('price', [$from, $to])->get();

我的问题是,这没关系,这会有用吗?如果不是,那么如果我想从10搜索到 infinity ,我该怎么办?

2 个答案:

答案 0 :(得分:1)

您可以在 php 中使用 ?? 来检查空值,因此如果第一个值为空,它将等于您传递的第二个值。喜欢:

$from = $request->to ?? 0;
$to = $request->to ?? Model::max('column'); // names are imaginary

答案 1 :(得分:0)

如果$to可以为空值,则应检查并构建不同的查询,具体取决于它。
例如:

$products = Product::query();

if(empty($to))
{
   $products = $products->where('price','>=', $from);
}
else 
{
   $products = $products->whereBetween('price', [$from, $to])
}

$products = $products->get();