Eager Loading with Pagination

2019-06-10 05:35发布

I have a a group instance I want to eager load with pagination:

public function show(Group $group)
{
    $group = $group->with('members);
    return$ group     
}

I want to return group with members paginated.

2条回答
别忘想泡老子
2楼-- · 2019-06-10 06:21

You can do that but it's not recommended because using paginate for eager loaded relationships generates two repeated queries

public function show(Group $group)
{
     $group = $group->with(['members' => function($query) {
        $query->paginate(24);
    }]);

     return $group;
}
查看更多
Luminary・发光体
3楼-- · 2019-06-10 06:22

Use setRelation() and lazy loading:

public function show(Group $group)
{
    return $group->setRelation('members', $group->members()->paginate(5));
}
查看更多
登录 后发表回答