0
votes

Comment charger une page de catégorie avec des produits à l'aide de la pagination et du filtrage? Laravel

// catégorieController xxx

// produit_to_to_catégories table pivot ... xxx

Je ne peux pas paginer les produits sur la page, comment Souhaitez-vous vous faire paginer avec un chargement impatient ou transmettre les variables séparément ...

J'ai une table de pivotement catégorie_produise ...

Je veux aussi filtrer en fonction de la marque et du prix?

EDIT: // produit.pphp xxx


0 commentaires

4 Réponses :


1
votes

Vous pouvez le faire en deux étapes comme ceci:

class CategoryController extends Controller
{
    public function show($slug)
    {
        $category = Category::where('slug', $slug)->first();
        $products = Product::where('category_id', $category->id)->paginate(20);

        return view('pages.category.show', compact('category', 'products'));
    }
}


1 commentaires

Merci, cependant, cela ne fonctionne pas car c'est une table de pivotement ...



1
votes

Inversez-le, ce qui signifie requis pour les produits à la place:

class CategoryController extends Controller
{
    public function show($slug)
    {
        $products = Product::with(['categories'])->whereHas('categories', function ($query) use ($slug) {
            $query->where(['slug' => $slug]);
        })->paginate();

        return view('pages.category.show', compact('products'));
    }
}


5 commentaires

Merci @tpojka que la réponse fournit les mêmes résultats que ma solution ci-dessous ...


Je m'envoie toujours avec la convention de nommage de la recommandation-cadre et que cette amorce devrait fonctionner. De votre question, nous ne savons pas si il y a deux tables I.e. Catégorie_Production et Produits_To_Catégories . Conservez-le simple et collant avec la convention de nommage de Laravel Votre table doit être une boîte inférieure catégorie_produise . De plus, vous devriez avoir des relations dans des modèles qui se sont interrogés. De cette façon, la pagination fonctionne naturellement. Testez si ce travail dd (\ app \ produit :: avec (['Catégories']) -> Premier ()); Si cela ne fonctionne pas, les relations entre les modèles sont à tort suspect.


Merci oui, je sais sur la convention Laravel ... Cependant, l'endroit où je travaille préfère cette convention de dénomination de table. Je vérifierai si cela fonctionne pour voir si c'est correct.


Il fonctionne ... `` `` Catégories de fonctions publiques () {Retour $ Ceci-> Betarottomanany (Catégorie :: Classe, 'Produits_To_Catégories', 'Product_ID', 'Catégorie_id'); } `` `parce que ...


Vous avez besoin de Catégories () Méthode / Relation dans Produit Modèle et Produits () Méthode / Relation dans Catégorie Modèle. Ici, vous avez montré des relations entre catégorie et catégorie. Postez vos modèles et quelqu'un vous dira si ceux-ci sont bien définis.



0
votes

Merci @tpojka que la réponse fournit les mêmes résultats que ceci ci-dessous ...

class CategoryController extends Controller
{
    public function show($slug)
    {
        $category = Category::where('slug', $slug)->first();;
        $products = $category->products()->paginate(15);

        return view('pages.category.show', compact('category', 'products'));
    }
}


0 commentaires

1
votes

Ceci avec chargement impatient

class CategoryController extends Controller 
{
   public function show($slug)
   {
      $category = Category::with('products')->whereHas('products' => function($query) {
                  if(request()->has('price') 
                  {
                     $query->where('price',request()->input('price');
                  }
                  if(request()->has('brand') 
                  {
                     $query->where('brand',request()->input('brand');
                  }
                  })->where('slug', $slug)->paginate(20);
      return view('pages.category.show', compact('category'));
   }   
 }


0 commentaires