Это моя таблица
| 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
?
Вы можете использовать, 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, если заданное входное значение присутствует во входящем запросе.
WhereNull('lvl2_name')
вместоwhere