使用'with'的关系分页



我在分页方面遇到了一些麻烦。我只需要对电影进行一个类别并对其进行分页。现在我写了一些代码,但我认为它没有优化。

$category = Category::with(['movies' => function ($query) {
$query->orderBy('id', 'desc')->paginate(18);
}])->where('slug', $slug)->first();
$catMoviesPaginate = $category->movies()->paginate(18);

您可以通过延迟加载来做到这一点,因为在这里我提到了可以帮助您的代码。

$category = Category::where('slug', $slug)->first();
$movies= $category->movies()->paginate(18); //lazy loding.
return view('example', compact('category', 'movies'));

您也可以在视图文件中呈现分页。

@foreach ($movies as $movie)
{{ $movie->id }}
@endforeach
{!! $movies->render() !!}

最有效的方法是在电影中为类别创建反转关系。然后,按 slug 查询 X 类别中的电影。你最终应该得到这样的东西

Movies::whereHas('categories', function($q) use($slug) {
$q->where('slug', $slug)
})->paginate(18);

您可以更进一步,在 Movies 模型中创建一个范围来简化代码。有了适当的范围,它可以像Movies::inCategory($slug)->paginate(18)一样简单

最新更新