SQL МЕЖДУ двумя колоннами в Laravel/Lumen
Ниже приведена выдержка из документации Laravel:
Метод whereBetween проверяет, что значение столбца находится между двумя значениями:
$users = DB::table('users')->whereBetween('votes', [1, 100])->get();
Но что, если я хочу узнать, находится ли значение между двумя столбцами в моей базе данных?
Это мой сырой SQL:
SELECT a.*, b.name FROM restaurants a, restaurant_class b
WHERE a.restaurant_class_id = b.id
AND '$d' = CURRENT_DATE
AND '$t' BETWEEN a.saturday_ot AND a.saturday_ct
ORDER BY id DESC
saturday_ot
и saturday_ct
- столбцы TIME
в моей таблице, а $t
- временная переменная. Поэтому я хочу проверить, находится ли время между этими двумя столбцами.
Ответы
Ответ 1
Нет альтернативы методу whereBetween
, который применяется к двум столбцам. Однако вы можете сделать это одним из двух способов:
1. Используйте whereRaw
с привязками, в которых вы используете условие raw и привязку к переменной:
whereRaw('? between saturday_ot and saturday_ct', [$t])
2. Используйте where
с двумя условиями, которые используют значения двух столбцов в качестве границ для значения переменной $t
:
where(function ($query) use ($t) {
$query->where('saturday_ot', '<=', $t);
$query->where('saturday_ct', '>=', $t);
})