下面是我对selct数据的laravel查询。。。
$mydata = DB::table('History')
->where('Start','>=',$Start)
->andwhere('Start','<=',$End)
->select()->get();
让我们假设在数据库中我们有3-10(开始)的数据。。。。。用户输入
1) 案例$start=2;$end=10;2) 案例$start=4;$end=10;
使用查询,我得到3-10之间的数据(1)case。。。
在第一种情况下,我不想显示任何数据,在第二种情况下我只想显示4-10之间的数据。。。条件应该类似
start=data<=end
而非start<=data<=end
我也试过。。。
$mydata = DB::table('History')
->where('Start',$Start)
->andwhere('Start','<=',$End)
->select()->get();
但仍然没有解决任何方法来解决这个laravel?
您的问题与Laravel本身无关。为了实现您的目标,您必须在筛选结果集之前在查询中探查数据。您在纯SQL中的查询可能类似于以下
SELECT h.*
FROM history h JOIN
(
SELECT a.start, MIN(h.start) min_start, a.end, MAX(h.start) max_end
FROM history h JOIN (SELECT 2 start, 10 end) a
ON h.start BETWEEN a.start AND a.end
) q
ON h.start BETWEEN q.start AND q.end
AND q.start >= q.min_start AND q.end <= q.max_end
此特定查询将返回一个空结果集。
如果您将(SELECT 2 start, 10 end) a
更改为(SELECT 4 start, 10 end) a
,您将获得
+-------+|启动|+-------+|4||5||6||7||8||9||10|+-------+