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);
})