Php 使用where条件避免列的Laravel MySQL

Php 使用where条件避免列的Laravel MySQL,php,mysql,laravel,Php,Mysql,Laravel,我想执行以下搜索查询,当用户发送值时,我想得到匹配的结果 如果任何结果包含“none”,我希望将其从where条件中删除,并仅检查其他结果的匹配值 示例1 $fructose = high $lactose = mid $polyols = none $fructan = none 如果是这样,我只想检查$果糖=高和$乳糖=中的匹配结果 示例2 $fructose = high $lactose = mid $polyols = mid $fructan = mid 如果是,我

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

如果任何结果包含“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();

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

您可以使用如下条件编写查询:

    $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();

只需添加一张支票。顺便问一下,当值是字符串时,为什么
=
?只有
=
可以工作。@rr-rr,您仍然没有在此处检查最佳答案:-但是,您正在使用我答案中的代码。。。