2016-10-18 9 views
0

laravel 5.2雄弁形式の簡単なクエリをひそかにしたい:は、私は雄弁に変換したいと思い、このSQLクエリを持って

$query = "(SELECT name, Heading, 'msg' as type FROM tbl_cms WHERE name LIKE '%" . 
     $keyword . "%' OR Heading LIKE '%" . $keyword ."%') 
     UNION 
     (SELECT name, channel, 'topic' as type FROM tbl_dramas WHERE name LIKE '%" . 
     $keyword . "%' OR channel LIKE '%" . $keyword ."%')"; 

私の現在の雄弁クエリは次のようになります。

$keyword = $request->get("term"); 
if ($keyword != '') { 
    $query->where(function ($query) use ($request) { 
     $query->where("name", "LIKE","%$keyword%") 
      ->orWhere("Heading", "LIKE", "%$keyword%"); 
    }); 
} 
return view('search', ['title' => 'search' ,'query' => $query]); 

どうすればそれを正常に変換できますか?

+0

$キーワード= $要求 - >( "用語")を取得します。 $ query-> where( "name"、 "LIKE"、 "%$ keyword%")(if($ keyword!= ''){ $ query->ここで(function($ query) ) - > orWhere( "見出し"、 "LIKE"、 "%$ keyword%"); }); } 復帰ビュー( 'search'、['title' => '検索'、 'query' => $ query]); } – shan

+0

上記のlaravelコードを実行しています – shan

+0

投稿を編集してコードを追加してください。 – Doom5

答えて

0

のようなものは、これを試してみてください:

$query1 = \DB::table('tbl_cms') 
    ->select(\DB::raw('name, Heading, msg AS type')) 
    ->where('name', 'LIKE', '%'.$keyword.'%') 
    ->orWhere('Heading', 'LIKE', '%'.$keyword.'%'); 

$query2 = \DB::table('tbl_dramas') 
    ->select(\DB::raw('name, channel, topic AS type')) 
    ->where('name', 'LIKE', '%'.$keyword.'%') 
    ->orWhere('channel', 'LIKE', '%'.$keyword.'%'); 

$result = $query1->union($query2)->get(); 
+0

私はこのエラーに直面します – shan

+0

Connection.php行のQueryException 729: SQLSTATE [42S22]:列が見つかりません:1054 'フィールドリスト'内の 'msg'が不明な列(SQL:(名前を選択、見出し、msgは 'tbl_cms 'name' LIKE%ary%または' Heading' LIKE%ary%)union(名前、チャンネル、トピックのASタイプを '名前' LIKE%ary%または 'チャンネル' LIKE%ary%)の 'tbl_dramas'から選択します) – shan

+0

'tbl_cms'にあるカラムのリストを提供できますか?テーブルに 'msg'という名前の列がないようです。 –

0
$first = DB::table('tbl_cms') 
      ->select('name', 'Heading', 'msg as type') 
      ->where('name', 'like', $keyword.'%') 
      ->orwhere('Heading', 'like', $keyword.'%'); 

$data = DB::table('tbl_dramas') 
      ->select('name', 'channel', 'topic as type') 
      ->where('name', 'like', $keyword.'%') 
      ->orwhere('channel', 'like', $keyword.'%') 
      ->union($first) 
      ->get(); 

その

0
$keyword = '%'.\Input::get('q').'%'; 

$query1 = \DB::table('tbl_cms') 
    ->select(\DB::raw("name, Heading, 'msg' as 'type'")) 
    ->where('name', 'LIKE', $keyword) 
    ->orWhere('Heading', 'LIKE', $keyword); 

$query2 = \DB::table('tbl_dramas') 
    ->select(\DB::raw("name, channel, 'topic' as 'type'")) 
    ->where('name', 'LIKE', $keyword) 
    ->orWhere('channel', 'LIKE', $keyword); 

$results = $query1->union($query2)->get(); 
関連する問題