Laravel Recherche Relation

J'ai deux modèles qui sont liées. Je suis en train de faire une recherche dans les Produits et de n'afficher que le réel les résultats de la recherche au lieu de TOUS les produits de la catégorie dans laquelle le produit a été trouvé. Je NE veux PAS de recherche pour toutes les catégories, depuis les catégories seront TOUJOURS affichées peu importe ce qui a été recherché et peu importe ce qui a été trouvé.

Example. I have the following categories:

- Food
- Drinks
- Candy

My "Food" category has the following products:

- Strawberry
- Apple
- Banana

My "Drinks" category has the following products:

- Banana Cocktail
- Beer
- Cola

My "Candy" category has the following products:

- Strawberry Lollipop
- Chocolate Bar
- Banana Ice Cream

Donc, ce que je VEUX réaliser est le suivant. Je fais une recherche pour un produit appelé "la Banane". Ce que je VEUX être affiché est:

Category Food
- Product Banana

Category Drinks
- Product Banana Cocktail

Category Candy
- Product Banana Ice Cream

Mais ma question est, à mon code, si je fais une recherche pour "Banane", il affiche la catégorie dans laquelle la banane est trouvé, et il s'en retourne et affiche TOUS les produits de cette catégorie au lieu de SEULEMENT les produits que j'ai cherché. Comment puis-je obtenir que les produits recherchés sont affichés?

Catégories De Modèle:

class Categories extends Eloquent {

    public function products()
    {
        return $this->hasMany('Products');
    } 
}

Produits Modèle:

class Products extends Eloquent {

    public function categories()
    {
        return $this->belongsTo('Categories');
    }
}

Mon Contrôleur:

    $searchString       = Input::get('search');

    if($searchString)
    {
        $categories = Categories::with('products')->orderBy($order, $by)->whereHas('products', function ($query) use ($searchString){
            $query->where('name', 'like', '%'.$searchString.'%');
        })->get();
    }
    else {
        $categories     = Categories::with('products')->orderBy($order, $by)->get();
    }

Mon Point De Vue:

@foreach($categories as $category)
    {{ $category->name }} //Show the category name

    @foreach($category->products as $product)
    {{ $product->name }} //Show all products in that category

    @endforeach
@endforeach
  • Quel est votre sortie désirée? Comme si "l'Exemple" appartient à la Catégorie "1 ", "Catégorie 2" et la "Catégorie 3", comment voulez-vous que la sortie d'apparaître?
  • Désolé, mais je n'ai pas très bien compris ce que vous voulez obtenir à partir de votre requête, une liste de Catégories ou d'une liste de Produits?
  • J'ai mis à jour ma question d'expliquer mieux 🙂 je veux afficher une liste de catégories, y compris les produits qui sont liés à cette catégorie.
InformationsquelleAutor Hardist | 2015-08-07