Eager Loading with Pagination

2019-06-10 05:46发布

问题:

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.

回答1:

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;
}


回答2:

Use setRelation() and lazy loading:

public function show(Group $group)
{
    return $group->setRelation('members', $group->members()->paginate(5));
}