2014-05-23 166 views
0

我有很多的麻煩排序,然後分頁集合中laravel 4排序和分頁

$articles = Article::get(); 
$articles->sortBy('category.name'); 

所以,我讓所有的文章,然後我的名字對它們進行排序,但是當我嘗試集合要做到這一點:

$articles->paginate(30); 

我得到一個錯誤拋出。我嘗試了各種各樣的分頁變化,比如分頁之前的分頁,但也不起作用,還有各種各樣的其他內容。

文章和類別之間的關係是這樣的:

class Article extends Eloquent { 
    public function category(){ 
    return $this->belongsTo('Category'); 
    } 
} 

class Category extends Eloquent { 
    public function articles(){ 
    return $this->hasMany('Article'); 
    } 
} 

我在這裏失蹤的大圖片或者是我的錯誤?

+0

你說「我得到一個錯誤拋出」 - 什麼是錯誤信息?在不知道的情況下診斷問題是非常困難的。 – Kryten

回答

0

你應該立即使用paginate,除非有一個非常具體的原因,你希望獲取所有東西然後進行處理。

$articles = Article::paginate(30); 

也許

$articles = Article::where('category_id', '=', '5')->paginate(30); 

或排序

$articles = Article::where('category_id', '=', '5')->sortBy('title')->paginate(30); 

你的榜樣讓我問:什麼是sortBy( '​​category.name')指的?你在文章表上,沒有任何引用或類別表,所以這是(可能)是錯誤的...是否有一個category_id字段上的文章表引用該類別?如果你想加入類別表和按類別名稱的文章,你應該嘗試像

$articles = Category::where('id', 'IN', '5,6,7,8,9')->articles->paginate(30); 

但這種假設你一直保持平時的慣例,就像在文章CATEGORY_ID,表的正確命名或否則聲明的關係字段等

有辦法操縱一個提取的集合,關閉。從documentation複製:

$roles = $roles->sortBy(function($role) 
{ 
    return $role->created_at; 
}); 
+0

我想根據它們所屬的類別名稱對結果進行排序並對它們進行分頁。 – Flobbo

+0

你的表格結構是什麼? – alou