Ho due modelli correlati. Sto cercando di effettuare una ricerca in Prodotti e di visualizzare solo i risultati di ricerca effettivi anziché TUTTI i prodotti della categoria in cui è stato trovato il prodotto. NON desidero cercare alcuna categoria, poiché le categorie verranno SEMPRE visualizzate indipendentemente da ciò che è stato cercato e indipendentemente da ciò che è stato trovato.Laravel Search Relationship
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
Quindi, quello che voglio ottenere è il seguente. Faccio una ricerca per un prodotto chiamato "Banana". Quello che voglio essere visualizzato è:
Category Food
- Product Banana
Category Drinks
- Product Banana Cocktail
Category Candy
- Product Banana Ice Cream
Ma il mio problema è, con il mio codice, se effettuo una ricerca per "Banana", visualizza la categoria in cui si trova la banana, e restituisce e visualizza tutti prodotti in quella categoria invece di SOLO i prodotti che ho cercato. Come posso ottenerlo in modo che vengano visualizzati solo i prodotti cercati?
Categorie Modello:
class Categories extends Eloquent {
public function products()
{
return $this->hasMany('Products');
}
}
Prodotti Modello:
class Products extends Eloquent {
public function categories()
{
return $this->belongsTo('Categories');
}
}
mio controller:
$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();
}
mio punto di vista:
@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
Qual è l'output desiderato? Come in se "Esempio" appartiene a "Categoria 1", "Categoria 2" e "Categoria 3", come vuoi che venga visualizzato l'output? – Ymartin
Scusa ma non ho capito bene cosa vuoi ottenere dalla tua query, un elenco di categorie o un elenco di prodotti? –
Ho aggiornato la mia domanda per spiegarlo meglio :) Voglio visualizzare un elenco di categorie compresi i prodotti che sono collegati a quella categoria. – Hardist