2017-10-06 66 views
-2

我嘗試在我的應用程序中同時搜索帖子標題和帖子標籤,所以我在我的搜索功能中使用了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 join food_ingredient on food_ingredient . food_id = food . id inner join ingredients on ingredient . id = food_ingredient . ingredient . id where food . title LIKE %papper% or ingredient . title LIKE %papper% group by food . id)

這是怎麼回事我數據庫:

Foods ->store posts

Ingredients ->Store ingredients

Food_ingredient ->store posts tags

12

我怎樣才能解決這個問題?

PS:我的帖子名稱是food,我的標籤名稱是ingredient(只是不同的命名)。

謝謝。

回答

0

使用時加入您需要在where子句中的表名指定爲好,因爲joins後,你將有多個列,所以你需要指定表名問title時:

$foods = Food::join('food_ingredient', 'food_ingredient.food_id','=', 'food.id') 
     ->join('ingredients','ingredient.id','=','food_ingredient.ingredient.id') 
     ->where('ingredient.title', 'LIKE', '%' . $search . '%') ... 

假設你想搜索成分標題

+0

你應該改變where子句以適合你的需求,正如我所說的,我想你想用'ingredtient.title'搜索......也許'ingredients.name'?這取決於你想達到什麼 –

+0

'ingredtient.title'和'food.title'我改變了你提到的部分也是我的錯誤。 (仍然出現錯誤) – mafortis

+0

您在開始時基於2個標題進行搜索(原始問題中也有),您需要指定表格......就是這樣!我無法猜測你需要什麼或者你想實現什麼邏輯,因爲我不知道你的表結構,也不知道你想用什麼SQL來生成通過使用Eloquent –