2016-06-13 4 views
0

Wenn ein Benutzer klickt auf einen Tag sagen „mobile“, ich versuche, alle Beiträge zu erhalten, die mit diesem Tag durch diese Methode verbunden sind:Paginieren Beiträge nach Tags

public function getRelevantPostsFromTag($tag) 
{ 
    $posts = []; 

    $tag = Tag::where('name', '=', $tag)->first(); 

    foreach ($tag->posts as $post) { 
     array_push($posts, $post); 
    } 

    return collect($posts); 
} 

Ich bin dann versucht, die zurückgegebene Auflistung paginieren, indem Sie versuchen, dies zu tun:

$posts = $this->postRepository->getRelevantPostsFromTag($tag); 
$posts = $posts->paginate(8); 

Aber ich bin ein Verfahren paginieren existiert nicht Fehler. Ist die Anwendung von paginate auf eine benutzerdefinierte Sammlung nicht zulässig?

Antwort

4

Sie könnten so etwas tun, um alle Beiträge nach Tag-Name und Paginate zu erhalten.

$posts = Post::whereHas('tags', function ($q) use ($name) { 
    $q->where('name', $name); 
})->paginate(...); 

Illuminate\Support\Collection hat keine Paginatmethode.

Wenn Sie bereits eine Sammlung haben, können Sie manuell einen Paginator erstellen und so etwas wie [email protected] verwenden, um es zu schneiden, damit Sie in den Paginator gelangen.