首页 > 解决方案 > 方法 Illuminate\Database\Eloquent\Collection

问题描述

我想在刀片中使用分页显示文章,但出现以下错误。不使用分页我没有问题。

BadMethodCallException 方法 Illuminate\Database\Eloquent\Collection::links 不存在。(查看:c:\xampp\htdocs\blog\resources\views\frontend\tag.blade.php)


    public function tag($slug)
    {
        $tag = Tag::where('slug', $slug)->first() ?? abort(404);
        $articles =  Article::where('status', '=', '1')->paginate(5);
        $article = $tag->articles;
        return view('frontend.tag', compact('article'));
    }

前端/tag.blade.php:

    {{ $article->links() }}

型号:Article.php



     public function articles()
      {
        return $this->belongsToMany(Article::class);
      }

标签: laravel

解决方案


你打错电话了。$article->links()它不应该article->links()在你的刀片中。你错过$article

 {{ $article->links() }}

同样在你的控制器中删除 $article = $tag->articles;。因为这个替换分页结果来自第一个查询,它应该是

$articles =  Article::whereHas('tags',function($query)use($slug){$query->where('slug', $slug)})->where('status', '=', '1')->paginate(5);

最终解决方案是

public function tag($slug)
{
    $articles =  Article::whereHas('tags',function($query)use($slug){
    $query->where('slug', $slug)})->where('status', '=', '1')->paginate(5);
              
     return view('frontend.tag', compact('article'));
}

在文章模型中添加关系

public function tags()
      {
        return $this->belongsToMany(Tag::class);
      }

并查看分页

 {{ $article->links() }}
       

推荐阅读