laravel查询跳过/不工作

时间:2014-06-27 12:18:37

标签: laravel laravel-4

我有一个问题:

$eventsList = DB::table('events')
    ->where('start', '>', Carbon::now())
    ->orWhere(function($query)
  {
      $query->where('start', '<', Carbon::now())
            ->where('end', '=', '0000-00-00 00:00:00');
  })
  ->orderBy($order_by, $order)
  ->get();

工作正常并返回大约50个结果。但我想限制并归档返回的条目,因此我添加了->skip()->take()链:

$eventsList = DB::table('events')
    ->where('start', '>', Carbon::now())
    ->orWhere(function($query)
  {
      $query->where('start', '<', Carbon::now())
            ->where('end', '=', '0000-00-00 00:00:00');
  })
  ->orderBy($order_by, $order)
  ->skip(0)->take(10)
  ->get();

但现在它什么也没有回报。我在这里做错了什么?

编辑:添加了getQueryLog()的结果:

array(1) {
  [0]=>
  array(3) {
    ["query"]=>
    string(112) "select * from `events` where `start` > ? or (`start` < ? and `end` = ?) order by `start` asc limit 10 offset 0"
    ["bindings"]=>
    array(3) {
      [0]=>
      object(Carbon\Carbon)#225 (3) {
        ["date"]=>
        string(19) "2014-06-27 13:31:12"
        ["timezone_type"]=>
        int(3)
        ["timezone"]=>
        string(13) "Europe/London"
      }
      [1]=>
      object(Carbon\Carbon)#228 (3) {
        ["date"]=>
        string(19) "2014-06-27 13:31:12"
        ["timezone_type"]=>
        int(3)
        ["timezone"]=>
        string(13) "Europe/London"
      }
      [2]=>
      string(19) "0000-00-00 00:00:00"
    }
    ["time"]=>
    float(0.76)
  }
}

1 个答案:

答案 0 :(得分:0)

我将假设以下内容:

当你说PAGE结果时 - 你实际上是指一次给我10个。

如果是这种情况,请使用->take($limit)->offset($offset)代替10,然后你的偏移是你的块

其中offset = $ page * 10

现在作为一个额外的事情:laravel杠杆为你分页功能paginate(10)

http://laravel.com/docs/pagination