忽略值$ request == null

时间:2018-08-03 09:31:08

标签: php mysql

这是我的桌子

| 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上显示所有没有选择选项的“水果”?

1 个答案:

答案 0 :(得分:2)

如果设置了变量,则可以使用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-clauses下可用

  

有时,您可能希望子句仅在其他情况为真时才应用于查询。例如,如果传入请求中存在给定的输入值,则您可能只想应用where语句。