2017-02-17 128 views
1

我想實現在laravel分頁使用分頁與laravel雄辯的查找方法一起,得到了以下錯誤如何laravel 5.4

Undefined property: Illuminate\Pagination\LengthAwarePaginator::$name 

這裏是我的控制器功能

public function showTags($id) 
{ 
    $tag = Tag::find($id)->paginate(5); 

    // when lazy loading 
    $tag->load(['posts' => function ($q) { 
     $q->orderBy('id', 'desc'); 
    }]); 

    return view('blog.showtags')->withTag($tag); 
} 

這裏是標籤模型

class Tag extends Model 
{ 
    public function posts() 
    { 
     return $this->belongsToMany('App\Post'); 
    } 
} 

標籤和帖子模型有belongsToMany關係,所以有很多帖子u在特定標籤之前,我的目標是按照帖子的降序重複所有帖子,並在該頁面中實現分頁。

這裏是代碼showtags查看

<table class="table"> 
    <thead> 
    <tr> 
     <th>#</th> 
     <th>Title</th> 
     <th>Tags</th> 
    </tr> 
    </thead> 
    <tbody> 
    <?php $count = 1; ?> 
    @foreach($tag->posts as $post) 
     <tr> 
      <th>{{ $count++ }}</th> 
      <th>{{ $post->title }}</th> 
      <th>@foreach($post->tags as $tag) 
        <span class="label label-default">{{ $tag->name }}</span> 
       @endforeach 
      </th> 
     </tr> 
    @endforeach 
    </tbody> 
</table> 

//Here is the code i used for pagination in view 
<div class="text-center"> 
    {!! $tag->posts->links() !!} 
</div> 

如果有人知道如何做到這一點請回復。提前致謝。

+1

不知道如果我失去了一些東西,但'的鏈接find'只得到單行,這樣你就可以」 t分頁。你想做什麼? – apokryfos

+0

@apokryfos我知道找到只給一行,但你可以看到在我看來,我迭代每個帖子在同一個標​​簽下,因爲標籤已經屬於與帖子的許多關係。我的目標是通過分頁來組織所有帖子。那麼有什麼辦法可以做到這一點 –

+1

所以你可能會做'$ tag-> posts() - > paginate(5)'或類似的東西。 – apokryfos

回答

2

我通過使用一個簡單的技巧解決了這個問題。我的目標是用相同的標籤對所有帖子進行分頁,就像你們可以在StackOverflow中看到的一樣。

修改後的控制器功能是

public function showTags($id) 
{ 
    $tag = Tag::find($id); 

    // when lazy loading 
    $tag->load(['posts' => function ($q) { 
    $q->orderBy('id', 'desc')->paginate(10); 
    }]); 

    return view('blog.showtags')->withTag($tag); 
} 

正如你們看到我動PAGINATE()函數查找要加載的我之前使用的降序排序後的功能。

現在考慮的,而不是使用傳統的方法{!! $tag->links() !!}製作分頁

我用{!! $tag->paginate(10) !!}

0

使用此行$tag = Tag::find($id)->paginate(5);您應該只能得到一個標籤(或者如果標籤與您的id不存在,則爲null),然後您想分頁。如果你想分頁你的標籤得到所有標籤,然後分頁Tag::paginate(5)