我有一个用户输入文本框,用户可以指定一个特定的过敏原,以避免拉食谱时(由它的id采摘)。例如,如果用户输入“菠萝”,它将在配料表中搜索与“菠萝”匹配的配料,并避免提取与该配料相关的配方id。
控制器中的代码:
$suited = $request->suitable_for;
$specificallerg = $request->specific_allergen;
$recipenew = Recipe::where('recipe.suitable_for', $suited)
->whereDoesntHave('ingredients', function($QBspecificallergens) use($specificallerg) {
$QBspecificallergens->where('recipeingredientsmain.ingredientname', 'like', '%specificallerg%');
})->pluck('id');
然而,问题是用户应该能够将用户文本保留为空白,搜索将继续进行其他方面。当前的问题是,如果用户将文本输入留空,则不会提取任何内容(数组为空)。有没有办法允许空白字段通过?我可以使用if语句检查用户输入是否为空,如果为空,只需删除代码的->wheredoesnthave。但是有没有其他办法解决这个问题呢?
2条答案
按热度按时间disbfnqx1#
试试这个
4nkexdtk2#
使用
when
```$recipenew = Recipe::where('recipe.suitable_for', $suited)
->when(!empty($specificallerg),function ($QBspecificallergens)use($specificallerg){
$QBspecificallergens->whereDoesntHave('ingredients', function($QBspecificallergens) use($specificallerg) {