2013-06-03 25 views
0

我使用Laravel 4:PAGINATE貪婪加載約束

我想分頁的渴望加載約束,本質上我有具有的hasMany關係的評論模型中的主題模式。這一切都很好,沒有問題。不過,我希望能夠在管理員編輯主題視圖中顯示評論的分頁表(其中將有數百個)。要做到這一點,我想我會用下面的代碼:

$topic = Topics::with(array('comments' => function($query) 
    { 
     $query->orderby('created_at', 'DESC'); 
     $query->paginate(10); 
    })) 
->where('id', $id) 
->first(); 

現在,這將爲我$topic與正確的對象和檢查$topic->comments表明它具有正確的鏈接評論,僅限於10個結果。分頁也響應頁面參數GET並分頁,但是嘗試回顯$topic->comments->links()導致未找到方法的錯誤。

我的工作周圍,這是有它計算的附加評論,然後用在我看來,下面第二個查詢:

$paginator = Paginator::make($topic->comments->toarray(), $commentCount, 10); 
echo $paginator->appends(array('tab' => 'comments'))->links(); 

這是一個錯誤?

回答

0

當您在熱切約束上致電paginate()時,它正在爲您配置查詢(設置跳過和取)。生成的paginator實際上會被丟棄。

既然你剛開始用它的評論一個主題,爲什麼不這樣做(相同數量的數據庫調用的)...

$topic = Topic::find($id); 
$comments = $topic->comments()->order_by('created_at DESC')->paginate(10); 

誠然,你將無法使用$topic->comments獲得paginator,而不得不使用$comments來代替,但那不是一件可怕的事情。

+0

我懷疑這是分頁發生了什麼。謝謝你的建議,就像你說的那樣,它會起作用 - 只是不那麼漂亮:) – carbontwelve