diff --git a/src/Jenssegers/Mongodb/Relations/EmbedsMany.php b/src/Jenssegers/Mongodb/Relations/EmbedsMany.php index df61c2778..eda777e8d 100644 --- a/src/Jenssegers/Mongodb/Relations/EmbedsMany.php +++ b/src/Jenssegers/Mongodb/Relations/EmbedsMany.php @@ -265,25 +265,36 @@ protected function associateExisting($model) } /** - * Get a paginator for the "select" statement. - * @param int $perPage - * @return \Illuminate\Pagination\AbstractPaginator + * @param null $perPage + * @param array $columns + * @param string $pageName + * @param null $page + * @return \Illuminate\Contracts\Pagination\LengthAwarePaginator */ - public function paginate($perPage = null) + public function paginate($perPage = null, $columns = ['*'], $pageName = 'page', $page = null) { - $page = Paginator::resolveCurrentPage(); + $page = $page ?: Paginator::resolveCurrentPage($pageName); $perPage = $perPage ?: $this->related->getPerPage(); $results = $this->getEmbedded(); - - $total = count($results); - + $results = $this->toCollection($results); + $total = $results->count(); $start = ($page - 1) * $perPage; - $sliced = array_slice($results, $start, $perPage); - return new LengthAwarePaginator($sliced, $total, $perPage, $page, [ - 'path' => Paginator::resolveCurrentPath(), - ]); + $sliced = $results->slice( + $start, + $perPage + ); + + return new LengthAwarePaginator( + $sliced, + $total, + $perPage, + $page, + [ + 'path' => Paginator::resolveCurrentPath() + ] + ); } /**