Php 对集合进行排序和分页

Php 对集合进行排序和分页,php,sorting,laravel-4,pagination,Php,Sorting,Laravel 4,Pagination,我很难在Laravel4中对收藏进行排序和分页 $articles = Article::get(); $articles->sortBy('category.name'); 因此,我获取所有文章,然后按名称对其进行排序,但当我尝试这样做时: $articles->paginate(30); 我被抛出一个错误。我尝试了各种不同的分页方式,比如排序前的分页,但这也不起作用,还有其他各种事情 文章和类别之间的关系如下: class Article extends Eloquent {

我很难在Laravel4中对收藏进行排序和分页

$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');
  }
}

我错过了这里的大局还是我的错误在哪里

您应该立即使用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字段用于引用该类别?如果您想加入category表并按category name对文章进行排序,您应该尝试以下操作

 $articles = Category::where('id', 'IN', '5,6,7,8,9')->articles->paginate(30);
但这假定您保持了通常的约定,比如在文章中使用category_id、正确命名表或以其他方式声明关系字段等

有几种方法可以使用闭包来操作获取的集合。从以下位置复制:


你说“我被抛出一个错误”-错误信息是什么?在不知道的情况下诊断问题是非常困难的。我想根据结果所属的类别名称对结果进行排序并对其进行分页。您的表结构是什么?
$roles = $roles->sortBy(function($role)
{
  return $role->created_at;
});