在 Laravel/Lumen 中的两列之间 SQL

2022-08-30 21:48:02

以下是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_ctTIME$t


答案 1

除了适用于两列的方法之外,没有其他方法。但是,您可以通过以下两种方式之一执行此操作:whereBetween

1. 与绑定一起使用,其中使用原始条件和变量的绑定:whereRaw

whereRaw('? between saturday_ot and saturday_ct', [$t])

2. 使用具有两个条件的 a,这些条件使用两个列值作为变量值的边界:where$t

where(function ($query) use ($t) {
    $query->where('saturday_ot', '<=', $t);
    $query->where('saturday_ct', '>=', $t);
})

答案 2

推荐