Вы можете написать еще условие,
if ($request->meter) {
switch ($request->meter) {
case 1:
$query->where([
['meterfrom', '>=', '5'],
['meterto', '<=', '50'],
]);
break;
case 2:
$query->where([
['meterfrom', '>=', '50'],
['meterto', '<=', '85'],
]);
break;
case 3:
$query->where([
['meterfrom', '>=', '85'],
['meterto', '<=', '110'],
]);
break;
default:
break;
}
} else {
$query->where([
['meterfrom', '>=', $request->x], // I hope x and y are request parameters you are getting
['meterto', '<=', $request->y],
]);
}
ИЛИ переключиться само, если не выполнено условие,
switch ($request->meter) {
case 1:
$query->where([
['meterfrom', '>=', '5'],
['meterto', '<=', '50'],
]);
break;
case 2:
$query->where([
['meterfrom', '>=', '50'],
['meterto', '<=', '85'],
]);
break;
case 3:
$query->where([
['meterfrom', '>=', '85'],
['meterto', '<=', '110'],
]);
break;
default: // this if no condition met then go to default case
$query->where([
['meterfrom', '>=', $request->x],
['meterto', '<=', $request->y],
]);
break;
}