私は自分のアプリケーションで投稿のタイトルと投稿タグを同時に検索して、検索機能でjoinメソッドを使用しようとしています。ここLaravelでの参加方法の検索
は私のフォームです:
<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>
そして、これは私の関数である:
これにより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'));
}
私はこのエラーを取得しています:
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
)
これは私がどのようですデータベース:
Foods ->store posts
Ingredients ->Store ingredients
Food_ingredient ->store posts tags
どのように修正できますか?
PS:私の投稿名はfood
で、私のタグ名はingredient
です(ちょっと違う名前です)。
ありがとうございます。
あなたはあなたが 'ingredtient.title' ... maybe'... maybe'で検索したいと思ったと述べたように、あなたのニーズに合わせてwhere句を変更する必要がありますか?これはあなたが達成したいものに依存します –
'ingredtient.title'と' food.title'私はあなたが言及した部分を私のエラーとしても変更しました。 (まだエラーが発生しています) – mafortis
最初に2つのタイトルに基づいて検索しました(元の質問にも)、テーブルを指定する必要があります。あなたが必要とするもの、または実装する論理を推測することはできません。私は、テーブル構造やEloquentを使用して生成するSQLを知りません。 –