J'essaie de rechercher dans mon application dans les titres de publication et de poster des balises en même temps, donc j'utilise la méthode de jointure dans ma fonction de recherche.Laravel recherche avec la méthode de jointure
ici est ma forme:
<div class="search">
<form class="form-inline" action="/search" method="GET" role="search">
{{ csrf_field() }}
<i class="fa fa-search"></i>
<div class="field-toggle">
<input type="text" name="search" class="search-form" autocomplete="off" placeholder="Search...">
</div>
<button type="submit" name="button">search</button>
</form>
</div>
Et ceci est ma fonction:
public function search() {
$search = request('search');
$foods = Food::join('food_ingredient', 'food_ingredient.food_id','=', 'food.id')
->join('ingredients','ingredient.id','=','food_ingredient.ingredient.id')
->where('food.title', 'LIKE', '%' . $search . '%')
->orWhere('ingredient.title', 'LIKE', '%' . $search . '%') //The fix
->orderBy('food.created_at', 'desc')
->groupBy('food.id')
->with('ingredients')
->paginate(8);
return view('front.search', compact('foods'));
}
Avec ce que je reçois cette erreur:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'food.title' in 'where clause' (SQL: select count(*) as aggregate from
foods
inner joinfood_ingredient
onfood_ingredient
.food_id
=food
.id
inner joiningredients
oningredient
.id
=food_ingredient
.ingredient
.id
wherefood
.title
LIKE %papper% oringredient
.title
LIKE %papper% group byfood
.id
)
Voici comment est ma base de données:
Foods ->store posts
Ingredients ->Store ingredients
Food_ingredient ->store posts tags
Comment puis-je résoudre ce problème? PS: mes noms de poste sont food
et le nom de mes tags sont ingredient
(juste un nom différent).
Merci.
Vous devez modifier la clause where pour répondre à vos besoins, comme indiqué je supposais que vous vouliez rechercher par ingredtient.title ... peut-être 'ingredients.name'? Cela dépend de ce que vous voulez atteindre –
'ingredtient.title' et' food.title' J'ai changé la partie que vous avez mentionnée aussi mon erreur. (toujours une erreur) – mafortis
Vous aviez au départ une recherche basée sur 2 titres (dans la question d'origine aussi), vous devez spécifier les tables ... c'est tout! Je ne peux pas deviner ce dont vous avez besoin ou la logique que vous voulez implémenter parce que je ne sais pas par exemple votre structure de table ni quel SQL vous voulez générer en utilisant Eloquent –