在 Laravel 5.6 中调用数组上的成员函数 links()

Posted

技术标签:

【中文标题】在 Laravel 5.6 中调用数组上的成员函数 links()【英文标题】:Call to a member function links() on array in Laravel 5.6 【发布时间】:2018-12-21 06:52:06 【问题描述】:

我在 Laravel 5.6 中使用分页来构建应用程序。我正在使用 Laravel DB 而不是 Eloquent。但是,当我在视图中添加分页链接时,它会显示错误调用数组上的成员函数 links()。这是因为我使用的是数组,默认是带有集合的对象。我得到的输出看起来像

array:12 [▼
    "current_page" => 1
    "data" => array:3 [▶]
    "first_page_url" => "http://127.0.0.1:8000/posts?page=1"
    "from" => 1
    "last_page" => 3
    "last_page_url" => "http://127.0.0.1:8000/posts?page=3"
    "next_page_url" => "http://127.0.0.1:8000/posts?page=2"
    "path" => "http://127.0.0.1:8000/posts"
    "per_page" => 3
    "prev_page_url" => null
    "to" => 3
    "total" => 9
]

当我使用正常分页时,即不转换为数组时,输出为

LengthAwarePaginator #264 ▼
    #total: 9
    #lastPage: 3
    #items: Collection #251 ▶
    #perPage: 3
    #currentPage: 1
    #path: "http://127.0.0.1:8000/posts"
    #query: []
    #fragment: null
    #pageName: "page"

我在这里面临的问题是将其他数据添加到集合中

我不能使用 pagination() 方法返回的默认输出。有人可以建议如何解决这个问题吗?

【问题讨论】:

请发布您的视图代码和任何可能相关的控制器代码。 我没听懂你。你能再解释一下吗? 请向我们展示创建分页对象的代码(通常在控制器类中)和将分页链接添加到 html 代码的代码(通常在视图模板中)。 内部视图我使用 $page->links() 来显示分页。使用 toArray() 将对象集合转换为数组 添加什么其他数据来收集? 【参考方案1】:

使用以下内容,我得到了所需的输出。 第 1 步:在文件中包含 LengthAwarePaginator

use Illuminate\Pagination\LengthAwarePaginator;

第二步:创建一个LengthAwarePaginator的对象

$paginate = new LengthAwarePaginator(Array, countOfArray, perPage, currentPage, [
        'path' =>  request()->url(),
        'query' => request()->query()
]);

我将 currentPage 值保持为空。 返回 $paginate 以查看。

return view('home', ['data' => Array, 'page' => $paginate]);

【讨论】:

以上是关于在 Laravel 5.6 中调用数组上的成员函数 links()的主要内容,如果未能解决你的问题,请参考以下文章

从 Laravel 5.2 更新到 5.3 后,调用数组上的成员函数 all()

调用数组上的成员函数 paginate()

在 laravel 资源中调用 null 上的成员函数 first()

使用 laravel 请求类时,在数组错误上调用成员函数失败()

调用字符串上的成员函数 addEagerConstraints() - Laravel 8

在运行 laravel phpunit testcase 时,我在 Model.php 第 1249 行收到错误“调用 null 上的成员函数 connection()”