J'utilise Laravel depuis quelques jours seulement, c'est donc une question pour les débutants. J'essaye beaucoup de choses mais je n'arrive pas à paginer mes résultats ...
J'ai essayé
public function totalProductos() {
$productos = Producto::get();
$productos = $productos->sortByDesc(function ($productos){
return $productos->detalles->sum('cantidad');
});
return view('admin.usuarios.rankingproductos')->with(compact('productos'));
}
au lieu de
$productos = Producto::get();
et j'ai obtenu les 8 premiers résultats mais je ne peux pas utiliser la méthode des liens pour paginer, obtenir un
'Les liens de méthode n'existent pas'
error
$productos = Producto::paginate(8);
En utilisant ce code, j'ai obtenu tous les résultats mais j'ai besoin de quelques pages pour les commander. Pouvez-vous m'aider? Merci
3 Réponses :
Vous devriez essayer ceci:
public function totalProductos() {
$productos = Producto::sortByDesc(function ($productos){
return $productos->detalles->sum('cantidad');
})->paginate(8);;
return view('admin.usuarios.rankingproductos')->with(compact('productos'));
}
<div class="pull-left">
<div class="row">
<div class="col-xs-12">
<div class="explore-pagination">
<nav>
<div class="pagination"> {{ $productos->links() }}</div>
</nav>
</div>
</div>
</div>
</div>
Votre fichier de vue comme:
<div class="pull-left">
<div class="row">
<div class="col-xs-12">
<div class="explore-pagination">
<nav>
<div class="pagination"> {{ $productos->render() }}</div>
</nav>
</div>
</div>
</div>
</div>
Réponse mise à jour p>
public function totalProductos() {
$productos = Producto::paginate(8);
$productos = $productos->sortByDesc(function ($productos){
return $productos->detalles->sum('cantidad');
});
return view('admin.usuarios.rankingproductos')->with(compact('productos'));
}
Merci. J'ai essayé avant de poster mais j'ai un "Le rendu de la méthode n'existe pas". Erreur :(
Les liens de méthode n’existent pas
@ VíctorGV: Veuillez effacer le cache et afficher puis essayer
Non ... je pense que le problème est ce que je veux paginer est une collection.
@ VíctorGV: D'accord
Mettre à jour la réponse
<div class="container">
@foreach ($productos as $product)
{{ $product->name }}
@endforeach
</div>
{{ $productos->links() }}
"Les liens de méthode n'existent pas"
Les liens rendra les liens vers le reste des pages dans le jeu de résultats. Chacun de ces liens contient déjà la variable de chaîne de requête page appropriée.
Ainsi, une fois que vous avez récupéré les résultats, vous pouvez afficher les résultats et afficher les liens de page sur votre lame fichier
public function totalProductos() {
$productos = Producto::paginate(8)->sortByDesc(function ($productos){
return $productos->detalles->sum('cantidad');
});
return view('admin.usuarios.rankingproductos', compact(['productos']));
}
Merci. J'ai essayé avant de poster mais j'ai un "Les liens de méthode n'existent pas". Erreur :(
Ça ne marche pas. Je pense que le problème est ce que je veux paginer est une collection. Je ne sais pas comment l'obtenir ... Je vais jeter un œil à nouveau sur Google Merci, quand même
Vous êtes le bienvenu homme !!! Je pense que vous devez utiliser à la place sortByDesc sortBy
La principale chose que la logique a dans votre code n'est pas correctement $ productos-> detalles-> sum ()
La fonction du contrôleur est:
<div class="row">
<div class="col-xs-12">
{!! $productos->render() !!}
</div>
</div>
vous devriez écrire cette ligne {!! $ productos-> render () !!} dans le fichier lame:
public function totalProductos() {
$productos = Producto::paginate(8)->sortByDesc(function ($productos){
return $productos->detalles->sum('cantidad');
});
return view('admin.usuarios.rankingproductos')->with(compact('productos'));
}
Dans ce cas, j'ai reçu ce message d'erreur: ((1/1) La méthode BadMethodCallException paginate n'existe pas. Dans Macroable.php ligne 74 à Collection -> __ call ('paginate', array (8)) dans ProductoController.php ligne 169 à ProductoController-> totalProductos () à call_user_func_array (array (object (ProductoController), 'totalProductos'), array ()) dans Controller.php ligne 55 à Controller-> callAction ('totalProductos', array ()) dans ControllerDispatcher.php line 44 à ControllerDispatcher-> dispatch (object (Route), object (ProductoController), 'totalProductos') dans Route.php ligne 203