diff --git a/src/Engines/TNTSearchEngine.php b/src/Engines/TNTSearchEngine.php index 57d07e6..acd40a3 100644 --- a/src/Engines/TNTSearchEngine.php +++ b/src/Engines/TNTSearchEngine.php @@ -119,17 +119,20 @@ public function paginate(Builder $builder, $perPage, $page) $results['hits'] = $filtered->count(); - $chunks = array_chunk($filtered->toArray(), $perPage); + /*$chunks = array_chunk($filtered->toArray(), $perPage); if (empty($chunks)) { return $results; - } + }*/ - if (array_key_exists($page - 1, $chunks)) { + /*if (array_key_exists($page - 1, $chunks)) { $results['ids'] = $chunks[$page - 1]; } else { $results['ids'] = []; - } + }*/ + + $results['per_page'] = $perPage; + $results['page'] = $page; return $results; } @@ -195,21 +198,17 @@ public function map(Builder $builder, $results, $model) call_user_func($this->builder->queryCallback, $builder); } - $models = $builder->whereIn( - $model->getQualifiedKeyName(), $keys - )->get()->keyBy($model->getKeyName()); - - // sort models by user choice - if (!empty($this->builder->orders)) { - return $models->values(); + if (array_key_exists('per_page',$results)){ + $models = $builder->whereIn( + $model->getQualifiedKeyName(), $keys + )->paginate($results['per_page'],['*'],'page',$results['page']); + }else{ + $models = $builder->whereIn( + $model->getQualifiedKeyName(), $keys + )->get(); } - // sort models by tnt search result set - return $model->newCollection($results['ids'])->map(function ($hit) use ($models) { - if (isset($models[$hit])) { - return $models[$hit]; - } - })->filter()->values(); + return $models; } /**