php - Laravel 5.3 对 sortBy 集合的分页

标签 php mysql laravel collections eloquent

为什么 paginate 方法在这个例子中不起作用?

$shopIds = Follower::whereUserId($user->id)->orderBy('created_at','desc')->get()->pluck('shop_id')->toArray();
            $shops = Shop::whereIn('id',$shopIds)->with('deals')->with('deals.likes')->paginate($this->perPage)->sortBy(function($likes) {
                return $likes->count();
            });
            dd($shops);

enter image description here

谢谢你的帮助;)

最佳答案

paginate 工作正常,但是 sortBy 方法给您带来了问题,因为当您使用 sortBy 时它会返回一个新集合.

最后,您的 $shopsIlluminate\Support\Collection 的实例,而不是 Illuminate\Pagination\LengthAwarePaginator 的实例。

你可以这样尝试:

$paginated_shops = Shop::whereIn('id',$shopIds)
                  ->with('deals')
                  ->with('deals.likes')
                  ->paginate($this->perPage);

$shops = $paginated_shops->sortBy(function($likes) {
        return $likes->count();
    });

$shops = new LengthAwarePaginator($shops, $paginated_shops->total(), $paginated_shops->perPage());

记得在类的顶部添加use语句:

use Illuminate\Pagination\LengthAwarePaginator;

关于php - Laravel 5.3 对 sortBy 集合的分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41200312/

相关文章:

javascript - 有没有办法用 Vue.JS SPA 刷新 Laravel Passport 的 cookie token ?

php - 在 Laravel 测试期间创建和删除表

php - 插入和选择嵌套查询中的 SQL 语法错误

php - curl PHP 文件上传

mysql - 是否可以从 phpmyadmin 3.4.10.1 中运行存储过程?

php - Laravel Input::file 返回空数组,而 $_FILES 有数据

javascript - Ajax 无法从 php 加载数据到 div

php - Wordpress 格式问题

php - 使用来自 paypal 的 post 数组

mysql - 使用mysql进行库存管理的思路