以下是我对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)案例......
在第一种情况下,我不想显示任何数据,在第二种情况下我想显示4-10之间的数据...条件应该像
start=data<=end
不是start<=data<=end
我也试过......
$mydata = DB::table('History')
->where('Start',$Start)
->andwhere('Start','<=',$End)
->select()->get();
但仍然没有修复任何方法来修复这个laravel?
答案 0 :(得分:1)
你的问题与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
,您将获得
+-------+ | start | +-------+ | 4 | | 5 | | 6 | | 7 | | 8 | | 9 | | 10 | +-------+