laravel数据库的条件

时间:2014-10-15 04:35:32

标签: php sql laravel laravel-4

以下是我对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?

1 个答案:

答案 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 |
+-------+