Это мой стол
| 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?
не работает @ Dr.Strange






Вы можете использовать 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
Sometimes you may want clauses to apply to a query only when something else is true. For instance you may only want to apply a where statement if a given input value is present on the incoming request.
попробуйте
WhereNull('lvl2_name')вместоwhere