我想执行以下搜索查询,当用户发送值时,我想获得匹配的结果
如果任何结果包含"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();