0
votes

Comment je peux paginer dB :: Select (...) Résultat et obtenir des liens ()?

J'ai une grande et difficile requête SQL. Ça fonctionne bien pour moi. Et j'ai le code suivant dans le contrôleur: xxx

donc, la méthode getreport me donne le résultat de dB :: Select (' ') , et, aussi bien connu, c'est un tableau.

Mais comme vous pouvez le constater, j'essaie d'adopter le résultat sur une vue. Et, bien sûr, j'aimerais appeler $ applications-> liens () dans la vue, comme pour éloquent collection. Quel est un moyen approprié et plus rapide de le faire?


0 commentaires

3 Réponses :


0
votes

réponse simple forte>, utilisez paginate () code> méthode: xxx pré>

Toutefois, paginate () code> fonctionne Seulement sur les collections et que vous avez une gamme d'objets, vous devez d'abord la transformer en une collection en utilisant le Forpage () code> Méthode: P>

La méthode de Forpage renvoie une nouvelle collection contenant les éléments qui seraient présents sur un numéro de page donné. La méthode accepte le numéro de page comme premier argument et le nombre d'éléments à afficher par page comme deuxième argument: p> blockQquote> xxx pré>


Réponse compliquée forte>: Construisez vous-même une instance de paginateur: p>

$perPage = 10;
$page = $request->input("page", 1);
$skip = $page * $perPage;
if($take < 1) { $take = 1; }
if($skip < 0) { $skip = 0; }

$basicQuery = DB::select(DB::raw("<here is the big diffcult SQL query>"));

$totalCount = $basicQuery->count();
$results = $basicQuery
    ->take($perPage)
    ->skip($skip)
    ->get();

$paginator = new \Illuminate\Pagination\LengthAwarePaginator($results, $totalCount, $take, $page);

return $paginator;


3 commentaires

Désolé, mais la réponse simple me donne appel à une fonction de membre paginate () sur tableau


Vous devez convertir votre tableau en une collection. Vous pouvez le faire en utilisant la méthode de Forpage () de Laravel () laravel.com/docs/6. X / Collections # Méthode-Forpage J'ai mis à jour la réponse. Vous pouvez également le faire en utilisant simplement collect (), puis paginate ().


Vous pouvez également le faire en utilisant simplement collect (), puis paginate () - ne fonctionne pas. Laravel me dit Méthode Illuminate \ Support \ Collection :: Paginate n'existe pas. À propos de Forpage . Aurai-je $ applications-> liens () méthode?



0
votes

SO basé sur la documentation Si votre $ Applications renvoie un résultat du constructeur de requêtes, alors appendez simplement -> paginate (10); .

https://laravel.com/docs/master/pagination # Paginant-Query-Builder-Résultats xxx


1 commentaires

Malheureusement, il ne fonctionnera pas (( getReport Résultat des retours du dB :: Select (..) et c'est un tableau. Cela signifie que je vais avoir appelera non défini Méthode Paginate sur une array Erreur.



1
votes

DOC

Pour afficher la pagination à la table, vous devez appeler le Sélectionnez et ensuite la méthode de pagination. p>

dans le contrôleur: p> xxx pré>

en vue: p>

$test->links();


0 commentaires