忽略值$request==null

ykejflvf  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(314)

这是我的table

| id|lvl1_name  |lvl2_name|lvl3_name  |value
| 1 |Fruit      |Apple    | USA       |20
| 2 |Fruit      |Apple    | England   |30
| 3 |Fruit      |Manggo   | USA       |45
| 4 |Fruit      |Manggo   | England   |15
| 5 |vegetable  |Spinach  | USA       |20
| 6 |vegetable  |Spinach  | England   |30

这是我的控制器:

$parameters_id = Fruits::where('lvl1_name', $request->lvl1)
            ->where('lvl2_name', $lvl2)
            ->select('id')->pluck('id');

如果我要求: $request->lvl1 = "Fruit" 以及 $request->lvl2 = "Apple" 将显示所有苹果
我的问题是我的要求 $request->lvl1 = "Fruit" 以及 $request->lvl2 = null 如何在没有选择选项的情况下显示所有“水果” lvl2 ?

mcvgt66p

mcvgt66p1#

你可以用 when 只运行 where 语句(如果设置了变量)。

$parameters_id = Fruits::where('lvl1_name', $request->lvl1)
    ->when($lvl2, function($query, $lvl2) {
        $query->where('lvl2_name', $lvl2);
    })
    ->select('id')->pluck('id');

它在下面有售https://laravel.com/docs/5.6/queries#conditional-条款
有时您可能希望子句仅在其他内容为真时应用于查询。例如,如果传入请求中存在给定的输入值,则可能只希望应用where语句。

相关问题