使用MySQL进行Laravel 5 Service API查询

时间:2015-07-31 18:22:35

标签: php mysql laravel laravel-5 laravel-5.1

我想使用数据库为搜索数据创建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

它将仅搜索乳糖,果糖和聚合物的色谱柱,并给出结果,无需检查果聚糖柱的值。

1 个答案:

答案 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();