2017-02-17 28 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'); 
    } 
} 

Модель тега и сообщения имеет отношениеМоя отношение, поэтому есть много сообщений u nder, и моя цель состоит в том, чтобы перебирать все сообщения в соответствии с конкретными тегами в порядке убывания поста, а также для реализации разбивки на страницы на этой странице.

Вот код для 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 paginate, что. Что ты пытаешься сделать? – 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); 
} 

Как вы, ребята, видите, что я двигаюсь функцию постраничной() с находкой для загрузки функции, которые я использую, прежде чем для сортировки пост по убыванию.

Теперь ввиду вместо использования традиционного метода {!! $tag->links() !!} для изготовления ссылку пагинацией

я использую {!! $tag->paginate(10) !!}

0

С этой строкой $tag = Tag::find($id)->paginate(5); Вы должны получить только один тег (или null, если тег с дозой id не существует), и после этого вы хотите его разбивать на страницы. Если вы хотите разбивать на страницы свои тэги, получите все теги, а после этого укажите их Tag::paginate(5)