2017-10-06 12 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

joins後、あなたが複数の列を持つことになりますので、あなたがtitleを尋ねたときに、テーブル名を指定する必要がありますので、あなたは、同様where句でテーブル名を指定する必要が合流使用:

$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

あなたはあなたが 'ingredtient.title' ... maybe'... maybe'で検索したいと思ったと述べたように、あなたのニーズに合わせてwhere句を変更する必要がありますか?これはあなたが達成したいものに依存します –

+0

'ingredtient.title'と' food.title'私はあなたが言及した部分を私のエラーとしても変更しました。 (まだエラーが発生しています) – mafortis

+0

最初に2つのタイトルに基づいて検索しました(元の質問にも)、テーブルを指定する必要があります。あなたが必要とするもの、または実装する論理を推測することはできません。私は、テーブル構造やEloquentを使用して生成するSQLを知りません。 –

関連する問題