2016-08-27 10 views
0

私は、以下の機能きた -Laravelクエリが正しく

public function search_profile(Request $request) 
{ 
    $search_keyword = $request->search; 
    $search_user = $request->user; 
    $user_public = User::where('username', $request->user)->first(); 

    $tags_list = Tag::orderBy('tag', 'asc')->get(); 
    $bookmarks = Bookmark::orderBy('created_at','desc')->where('bookmarker', $search_user)->where('public', '1')->where('tags', 'rlike', $search_keyword)->orwhere('title', 'rlike', $search_keyword)->orwhere('description', 'rlike', $search_keyword)->orwhere('contents', 'rlike', $search_keyword)->paginate(15); 
    $bookmarks_all = Bookmark::orderBy('created_at','desc')->where('bookmarker', $search_user)->where('public', '1')->where('tags', 'rlike', $search_keyword)->orwhere('title', 'rlike', $search_keyword)->orwhere('description', 'rlike', $search_keyword)->orwhere('contents', 'rlike', $search_keyword)->get(); 
    return view('profile_search')->with('bookmark', $bookmarks)->with('tags_list', $tags_list)->with('bookmarks_all', $bookmarks_all)->with('username', $user_public)->with('search_keyword', $search_keyword); 
} 

をしかし、私も他のbookmarkerから結果を取得しています。たとえば、$search_keyword = 'laravel'$serach_user = 'zack'の場合私は他のユーザーからも結果を得ています。

私はlaravelに新規登録しました。だから私はクエリで間違っているんだ?

答えて

1

あなたのクエリ

$bookmarks = Bookmark::orderBy('created_at','desc')->where('bookmarker', $search_user)->where('public', '1')->where('tags', 'rlike', $search_keyword)->orwhere('title', 'rlike', $search_keyword)->orwhere('description', 'rlike', $search_keyword)->orwhere('contents', 'rlike', $search_keyword)->paginate(15); 

はあなたにそれがタイトルに一致した場合、それは結果を返しますので、あなたが意図したものではありません。この

SELECT * FROM bookmarks WHERE bookmarker = $search_user AND public = 1 OR title rlike $search_keyword OR content rlike $search_keyword; 

のようなものが得られます。

Bookmark::orderBy('created_at','desc') 
     ->where('bookmarker', '$search_user') 
     ->where('public', '1') 
     ->orWhere(function ($query) use ($search_keyword) { 
      $query->where('title', 'rlike', $search_keyword) 
        ->where('contents', 'rlike', $search_keyword); 
     }) 
     ->get(); 

チェックアウトadvance where

は何が最も可能性が高いたいのはこれです。

+0

「未定義変数:search_keyword」エラーが発生しました。なぜ変数にアクセスできないのですか? –

+0

あなたはUseキーワード - > https://secure.php.net/manual/en/language.namespaces.importing.phpを使用する必要があります。答えは – SteD

+0

です。私はちょうどここでそれについて見つけました - http://stackoverflow.com/a/29548311/3866364 –

関連する問題