2017-02-22 60 views
-1

У меня есть две моделиLaravel пагинация к имеет много отношения в Laravel 5,4

Альбом

public function AlbumImage(){ 

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

AlbumGallery

В контроллере я следующий код

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

Теперь я должен постраничным только альбом галерею .I попытался следующими методами, но он не работает

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

Также попробовал этот вопрос ответ Laravel Eloquent pagination on relationships

+0

Какую версию laravel вы используете? – davejal

+0

laravel 5.4 Я использую – iCoders

+0

, чтобы описать нерабочие. – davejal

ответ

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" 
     } 
     ] 
    } 
} 

Надеется, что это помогает!

+0

@Peter .thanks я попытался в этом, я сталкиваюсь с проблемой, если я нажимаю на ссылку pagniation, она не будет обманывать образы альбомов. \ – iCoders

+0

@iCoders Хорошо, также убедитесь, что при нажатии на ссылку этот URL-адрес действительно изменяется на 'http: //example.app/api/albums/1? Page = 2', поэтому он имеет' page = 2'. также в случае, если у вас есть несколько объектов, которые должны быть сгруппированы по страницам, может потребоваться установить пользовательский параметр 'pageGallery', чтобы его отображал paginator. –

+0

@ Peter.Thanks.yapage url isd change уже только для изменения галереи – iCoders