laravel数据库where条件


laravel database where condition

下面是我对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|+-------+