如何在Laravel中为hasMany关系进行分页(App \ News ::用户必须返回一个关系实例)

时间:2018-10-21 19:53:06

标签: php laravel

在这种情况下,我无法在laravel中进行分页

return $this->hasMany('App\News','category_id')->orderBy('id','desc')->paginate(20);

但是说错误。在控制器中,我也尝试过

$byCategories=Category::findOrFail($id)->paginate(20);`

它也表示错误。

救救我。

我的模特是

class Category extends Model
{
    public function news()
    {
        return $this->hasMany('App\News','category_id')->orderBy('id','desc');
    }

    public function newsMany()
    {
        return $this->belongsToMany('App\News')->paginate(20);
    }

    public function user()
    {
        return $this->belongsTo('App\User');
    }

    public function getRouteKeyName()
    {
        return 'slug';
    }
}

另一个模型是

class News extends Model
{
    public function user()
    {
        return $this->belongsTo('App\User');
    }

    public function category()
    {
        return $this->belongsTo('App\Category');
    }
}

我的控制器代码是

public  function byCategory($id)
{
     $byCategories=Category::findOrFail($id);
     return view('back-end/news/byCategory', compact('byCategories'));
}

非常感谢您。

1 个答案:

答案 0 :(得分:0)

模型中没有分页 这将在控制器中完成,例如,从此处删除(-> paginate(20);)

public function newsMany()
{
    return $this->belongsToMany('App\News')->paginate(20);
}

仅保留为

public function newsMany()
{
    return $this->belongsToMany('App\News');
}

并在返回视图时调用控制器中的分页

 $news=Category::findOrFail($id)->newsMany()->paginate(20);
 return view('view name', compact('news'));