2014-06-27 20 views
1

我有一個查詢:laravel查詢跳過/拿不出工作

$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

這看上去很好,檢查查詢與'DB :: getQueryLog()'例如。 –

+0

謝謝你 - 我已經添加了getQueryLog的結果,但我不確定如何解釋它。 – babbaggeii

+0

這意味着查詢被執行,因爲它應該和其他地方的問題。你得到了什麼結果?它應該是stdObjects數組或空數組。 –

回答

0

我將承擔如下:

當你說PAGE結果 - 你實際上意味着給我10日的時間。

如果多數民衆贊成的情況下使用->take($limit)->offset($offset),而不是爲了拿10,然後你的偏移是你的一塊

其中偏移= $頁* 10

現在,作爲一個額外的東西:laravel槓桿爲您提供分頁功能PAGINATE(10)

http://laravel.com/docs/pagination