我嘗試在我的應用程序中同時搜索帖子標題和帖子標籤,所以我在我的搜索功能中使用了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
(只是不同的命名)。
謝謝。
你應該改變where子句以適合你的需求,正如我所說的,我想你想用'ingredtient.title'搜索......也許'ingredients.name'?這取決於你想達到什麼 –
'ingredtient.title'和'food.title'我改變了你提到的部分也是我的錯誤。 (仍然出現錯誤) – mafortis
您在開始時基於2個標題進行搜索(原始問題中也有),您需要指定表格......就是這樣!我無法猜測你需要什麼或者你想實現什麼邏輯,因爲我不知道你的表結構,也不知道你想用什麼SQL來生成通過使用Eloquent –