Laravel MySQL带有where条件以避免列


Laravel MySQL with where conditions avoid columns

我想执行以下搜索查询,当用户发送值时,我想获得匹配的结果

如果任何结果包含"none",我想将其从where条件中删除,并只检查其他的匹配值

示例1

$fructose = high 
$lactose = mid 
$polyols = none 
$fructan = none

如果是这样的话,我只想检查$果糖=高和$乳糖=中等的匹配结果

示例2

$fructose = high 
$lactose = mid 
$polyols = mid 
$fructan = mid 

如果是,我想检查所有匹配结果

请注意,以下是我当前的查询

 $fod = FodMap::select('*')
        ->where('fructose_level', '>=', $fructose)
        ->where('lactose_level','>=', $lactose)
        ->where('polyols_level',  '>=', $polyols)
        ->where('fructan_level', '>=', $fructan)
        ->get();

在这里,我试图通过使用雄辩的结构编写查询来解决您的问题。您应该根据需要在适当的条件下管理价值和运营商。

你可以用这样的条件写你的查询:

    $query = FodMap::select('*');
    if($fructose != none){
      $query = $query->where('fructose_level',$fructose);
    }
    if($lactose != none){
      $query = $query->where('lactose_level',$fructose);
    }
    if($polyols != none){
      $query = $query->where('polyols_level',$fructose);
    }
    if($fructan != none){
      $query = $query->where('fructan_level',$fructose);
    }
    $fod = $query->get();