我想使用数据库为搜索数据创建Service API。
这是我目前的查询:
public function show($fructose,$lactose,$polyols,$fructan )
{
$FodMaps = FodMap::where('fructose','=',$fructose)->
where('lactose','=',$lactose)->
where('polyols','=',$polyols)->
where('fructan','=',$fructan)->
get();
return $FodMaps;
}
我的服务网址是:
/api/service/lactose=high/fructose=high/polyols=high/fructan=high
它应包含高值和低值。但有时它会带来“无”的价值:
/api/service/lactose=high/fructose=high/polyols=none/fructan=none
我想要的是,如果它包含任何“none”值,则从查询中转义该项并进行搜索。因为当前查询搜索所有4个值。
例如:如果网址带有以下值:
/api/service/lactose=high/fructose=high/polyols=high/fructan=high
它将检查匹配所有4个项目的结果。
但如果有这个:
/api/service/lactose=high/fructose=high/polyols=none/fructan=none
它将仅搜索乳糖,果糖和聚合物的色谱柱,并给出结果,无需检查果聚糖柱的值。
答案 0 :(得分:0)
使用功能检查可变数据
$FodMaps = FodMap::where(function($query) use($fructose,$lactose,$polyols,$fructan){
if($fructose != 'none'){
$query->where('fructose','=',$fructose);
}
if($lactose != 'none'){
$query->where('lactose','=',$lactose);
}
if($polyols != 'none'){
$query->where('polyols','=',$polyols);
}
if($fructan != 'none'){
$query->where('fructan','=',$fructan);
}
})
->get();