From af8c27557565a1ece4cb2e5cebfaf5d073d3f23d Mon Sep 17 00:00:00 2001 From: Giacomo Fabbian Date: Tue, 11 Feb 2020 10:24:15 +0100 Subject: [PATCH 1/4] [GF] Add docs, use collection for slice operation, fix return type and fix $sliced type --- .../Mongodb/Relations/EmbedsMany.php | 35 +++++++++++++------ 1 file changed, 24 insertions(+), 11 deletions(-) diff --git a/src/Jenssegers/Mongodb/Relations/EmbedsMany.php b/src/Jenssegers/Mongodb/Relations/EmbedsMany.php index df61c2778..5f2913464 100644 --- a/src/Jenssegers/Mongodb/Relations/EmbedsMany.php +++ b/src/Jenssegers/Mongodb/Relations/EmbedsMany.php @@ -5,6 +5,7 @@ use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model as EloquentModel; +use Illuminate\Pagination\AbstractPaginator; use Illuminate\Pagination\LengthAwarePaginator; use Illuminate\Pagination\Paginator; use MongoDB\BSON\ObjectID; @@ -264,26 +265,38 @@ protected function associateExisting($model) return $this->setEmbedded($records); } + /** - * 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(); $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() + ] + ); } /** From 1437a2f42c4f5e7897796644b7284ed7bed37967 Mon Sep 17 00:00:00 2001 From: Giacomo Fabbian Date: Tue, 11 Feb 2020 11:43:54 +0100 Subject: [PATCH 2/4] [GF] Fix style CI --- src/Jenssegers/Mongodb/Relations/EmbedsMany.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/Jenssegers/Mongodb/Relations/EmbedsMany.php b/src/Jenssegers/Mongodb/Relations/EmbedsMany.php index 5f2913464..648c38fb4 100644 --- a/src/Jenssegers/Mongodb/Relations/EmbedsMany.php +++ b/src/Jenssegers/Mongodb/Relations/EmbedsMany.php @@ -264,8 +264,7 @@ protected function associateExisting($model) return $this->setEmbedded($records); } - - + /** * @param null $perPage * @param array $columns From ca83a9b80d484841477488b595a28d26738cb83a Mon Sep 17 00:00:00 2001 From: Giacomo Fabbian Date: Tue, 11 Feb 2020 11:45:00 +0100 Subject: [PATCH 3/4] [GF] Optmize import --- src/Jenssegers/Mongodb/Relations/EmbedsMany.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/Jenssegers/Mongodb/Relations/EmbedsMany.php b/src/Jenssegers/Mongodb/Relations/EmbedsMany.php index 648c38fb4..7501ca7d1 100644 --- a/src/Jenssegers/Mongodb/Relations/EmbedsMany.php +++ b/src/Jenssegers/Mongodb/Relations/EmbedsMany.php @@ -5,7 +5,6 @@ use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model as EloquentModel; -use Illuminate\Pagination\AbstractPaginator; use Illuminate\Pagination\LengthAwarePaginator; use Illuminate\Pagination\Paginator; use MongoDB\BSON\ObjectID; @@ -264,7 +263,7 @@ protected function associateExisting($model) return $this->setEmbedded($records); } - + /** * @param null $perPage * @param array $columns From 70c72634b0980cf2c1d0b084fc1dd5896b7d3dbb Mon Sep 17 00:00:00 2001 From: Giacomo Fabbian Date: Wed, 12 Feb 2020 09:58:38 +0100 Subject: [PATCH 4/4] [GF] Fix resolveCurrentPage() --- src/Jenssegers/Mongodb/Relations/EmbedsMany.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Jenssegers/Mongodb/Relations/EmbedsMany.php b/src/Jenssegers/Mongodb/Relations/EmbedsMany.php index 7501ca7d1..eda777e8d 100644 --- a/src/Jenssegers/Mongodb/Relations/EmbedsMany.php +++ b/src/Jenssegers/Mongodb/Relations/EmbedsMany.php @@ -273,7 +273,7 @@ protected function associateExisting($model) */ 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();