【问题标题】:Laravel pagination to Has Many relationship in Laravel 5.4Laravel 分页与 Laravel 5.4 中有很多关系
【发布时间】:2017-02-22 03:30:09
【问题描述】:

我有两个模型

专辑

public function AlbumImage(){

        return $this->hasMany('App\AlbumGallery');
    }

相册库

在控制器中我有以下代码

  $data=  Album::where('id', $id)->with('AlbumImage')->first();

现在我只需要对相册画廊进行分页。我尝试了以下方法,但它不起作用

   $data=  Album::where('id', $id)->with('AlbumImage')->first()->paginate(2);

也试过这个问题的答案 Laravel Eloquent pagination on relationships

【问题讨论】:

  • 你用的是哪个 laravel 版本?
  • 我正在使用laravel 5.4
  • 描述不工作。
  • @davejal.sorry 我没听懂你说的是什么
  • 描述不工作是什么意思

标签: php pagination has-many laravel-5.4 laravel-eloquent


【解决方案1】:

因此,尊重your mentioned answer,添加到您的Album 模型中:

public function getAlbumImagePaginatedAttribute()
{
    return $this->AlbumImage()->paginate(3);
}

并在刀片视图文件中使用它,如下所示:

{{ $album->name }}<br>

<ul>
@foreach($album->album_image_paginated as $album_gallery)
    <li>{{ $album_gallery->gallery_name }}</li>
@endforeach
</ul>

{{ $album->album_image_paginated->links() }}

对于 API 调用,您可以使用如下内容:

Route::get('/albums/{id}', function($id) {

   $album = \App\Album::findOrFail($id);

   return [
       'id' => $album->id,
       'images' => $album->album_image_paginated,
   ];
});

所以响应将是:

{  
   "id":1,
   "images":{  
      "total":6,
      "per_page":3,
      "current_page":1,
      "last_page":2,
      "next_page_url":"http://example.app/api/albums/1?page=2",
      "prev_page_url":null,
      "from":1,
      "to":3,
      "data":[  
         {  
            "id":1,
            "gallery_name":"first image",
            "album_id":1,
            "created_at":"2017-02-22 09:47:46",
            "updated_at":"2017-02-22 09:47:46"
         },
         {  
            "id":2,
            "gallery_name":"Second",
            "album_id":1,
            "created_at":"2017-02-22 09:48:31",
            "updated_at":"2017-02-22 09:48:31"
         },
         {  
            "id":3,
            "gallery_name":"33",
            "album_id":1,
            "created_at":"2017-02-22 09:48:35",
            "updated_at":"2017-02-22 09:48:35"
         }
      ]
   }
}

希望这会有所帮助!

【讨论】:

  • @Peter .thanks 我试过这个我面临的问题是如果我点击分页链接它不会改变专辑图片。\
  • @iCoders 好的,还要确保在单击链接时,该 url 实际上会更改为http://example.app/api/albums/1?page=2,所以它有page=2。此外,如果您有多个需要分页的实体,可能需要设置自定义 pageGallery 参数以便分页器理解它
  • @Peter.Thanks.yapage url isd 已经改变了,唯一的事情就是改变画廊
猜你喜欢
  • 1970-01-01
  • 2018-12-09
  • 2016-10-12
  • 2023-03-09
  • 2020-10-24
  • 1970-01-01
  • 2014-07-10
  • 2015-08-05
  • 1970-01-01
相关资源
最近更新 更多