我如何在laravel中对这些结果进行分页?

时间:2016-04-22 13:21:21

标签: laravel pagination pivot-table

我正在阅读这篇文章,以了解如何根据他们有多少喜欢对我的数据库中的记录进行排序:

Laravel OrderBy relationship count

我提出了这个有效的方法:

$Book = Book::with('likes')->get()->sortByDesc(function($book_sort)
{
    return $book_sort->likes->count();
}); 

这是基于本书的模型:

namespace App;

use Illuminate\Database\Eloquent\Model;

class Book extends Model
{
    public $timestamps = true; 


    protected $fillable = [
    'title', 'author', 'category', 'featured', 'rating', 'description'
    ];

    public function category()
    {
        return $this->hasOne('App\Cat', 'id', 'category_id');
    }
    public function likes()
    {
        return $this->belongsToMany('App\User', 'favourite_books')->withTimestamps();
    }
    public function total_likes()
    {
        return $this->likes()->count();
    }
}

但是现在我不知道如何对这些结果进行分页。有谁知道吗?

2 个答案:

答案 0 :(得分:1)

创建手动分页,试试这个:

$Book = Book::with('likes')->get()->sortByDesc(function($book_sort)
{
     return $book_sort->likes->count();
}); 

$paginator = new Illuminate\Pagination\Paginator($Book, 10);

return view('pages.homepage', compact('paginator'))

答案 1 :(得分:0)

sortByDesc()orderBy()仅适用于馆藏。 orderByRaw()仅适用于列名。此外,获得结果,排序和分页是一个性能。它也可以吃掉所有的记忆。

因此,我在这里看到的唯一解决方案是使用{{1}}甚至原始查询。