[PHP] Un adaptateur Meilisearch pour Pagerfanta
Publié le 21/05/2023 • Actualisé le 21/05/2023
Dans ce bout de code, nous voyons comment créer un adaptateur Meilisearch pour la librairie de pagination Pagerfanta. Comment vous pouvez le voir, c'est assez facile. J'essaierai de faire une PR quand je trouverai un peu de temps, sinon n'hésitez à la faire si vous en avez besoin. On peut l'utiliser comme ceci :
$pagination = (new Pagerfanta(new MeilisearchAdapter($searchResult)))->setCurrentPage($page);
ou $searchResult
est un objet Meilisearch\Search\SearchResult
.
<?php
declare(strict_types=1);
namespace App\Search\Pager;
use Meilisearch\Search\SearchResult;
use Pagerfanta\Adapter\AdapterInterface;
/**
* Adapter which calculates pagination from a Meilisearch SearchResult object.
*
* @template T
*
* @implements AdapterInterface<T>
*/
final readonly class MeilisearchAdapter implements AdapterInterface
{
public function __construct(
public SearchResult $searchResult,
) {
}
/**
* @phpstan-return int<0, max>
*/
public function getNbResults(): int
{
return max(0, $this->searchResult->getTotalHits());
}
/**
* @phpstan-param int<0, max> $offset
* @phpstan-param int<0, max> $length
*
* @return array<int, T>
*/
public function getSlice(int $offset, int $length): iterable
{
return $this->searchResult->getHits(); /** @phpstan-ignore-line */
}
}
A vous de jouer !
Ces articles vous ont été utiles ? Vous pouvez m'aider à votre tour de plusieurs manières : (cliquez sur le lien "reply" dans à droite pour me contacter )
- Me remonter des erreurs ou typos.
- Me remonter des choses qui pourraient être améliorées.
- Aimez et repostez !
- Suivez moi sur Bluesky 🦋
- Inscrivez-vous au flux RSS.
- Cliquez sur les boutons Plus sur Stackoverflow pour me faire gagner des badges "annonceur" 🏅.
Merci et à très bientôt sur Strangebuzz ! 😉
