2016-03-28 27 views
-1

我想执行下面的搜索查询,当用户发送的值我想匹配的结果Laravel的MySQL与那里的条件避免列

如果任何结果包含“无”我想从删除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(); 
+1

只需添加一个检查。顺便说一句,为什么'> ='当这些值是字符串?只有'='会起作用。 –

+0

@rr rr,你仍然没有在这里检查最佳答案:http://stackoverflow.com/questions/36054760/how-to-get-opposite-results-from-a-query-laravel - 但是,你使用我答案中的代码... –

回答

1

在这里,我试图解决你的问题使用雄辩的结构编写查询。您应该按照您的需要在任何条件下管理价值和运营商。

你可以写与条件,如果像这样的查询:

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