2016-06-13 176 views
0

当一个标签的用户点击说“手机”,我试图获取与该标签通过这种方法相关联的所有帖子:分页帖子

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

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

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

    return collect($posts); 
} 

我再试图通过尝试分页返回的收集:

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

但我收到一个方法分页不存在的错误。 paginate在自定义集合上的应用是否被禁止?

回答

4

你可以这样做,通过标签名称和分页获得所有帖子。

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

Illuminate\Support\Collection没有分页方法。

如果你已经有一个集合,你可以手动创建一个分页器,并使用诸如[email protected]之类的东西来帮助分割它,让你传入分页器。