2016-03-24 3 views
2

私は照会を行う方法を学ぼうとしています。検索フィールドはuser_profilesの中に保存されているポストコード用です(user_profilesはユーザーとの関係を持っています)Laravel 5.2 query 1郵便番号のテーブルとIDを取得して別のクエリを照会

私は1つの結果を返しますが(しかし、1以上あります)悪い

public function index() 
{ 
    $queryUsername = Request::get('username'); 
    $queryPostcode = Request::get('postcode'); 
    if ($queryUsername) { 
     $users = User::where('username', 'LIKE', "%$queryUsername%")->get(); 
    } 
    if ($queryPostcode) { 

     $usersInfo = UserProfile::where('postcode', '=', "$queryPostcode")->value('user_id'); 
     $users = User::where('id', '=', "$usersInfo")->get(); 
    } 
    return view('view', compact('users')); 
} 

答えて

1

をして行くことです参加の代わりに、二つの異なるクエリ

public function index() 
{ 
    $queryUsername = Request::get('username'); 
    $queryPostcode = Request::get('postcode'); 
    if ($queryUsername) { 
     $users = User::where('username', 'LIKE', "%$queryUsername%")->get(); 
    } 
    if ($queryPostcode) { 

     $users = Users::rightJoin('user_profiles','users.id', '=', 'user_profiles.user_id') 
      ->where('user_profiles.postcode', '=', "$queryPostcode") 
      ->select(\DB::raw('users.*')) 
      ->get(); 
    } 
    return view('view', compact('users')); 
} 

あなたは $ユーザーをマッチングユーザー名のLIKEを使用して良いのユーザー名 の完全一致のためにそのない探している場合=ユーザー::どこ(「ユーザ名」、「LIKE」、「%$ queryUsername%」) - >取得する(); chrisとchrisgeorgeとchristyのクエリ%chris%が機能し、正確な一致が得られないので、代わりに '='を使用することをお勧めします。

+1

あなたは神様です!本当にありがとう!!私は左のジョインをしてジョインしようとしていましたが、それをどのようにソートするか分かりませんでした! - > select(\ DB :: raw( 'users。*'))の必要はありませんでしたが –

0

これを試してみてください:より良い方法を参照し、質問のための

public function index(){ 
    $queryUsername = Request::get('username'); 
    $queryPostcode = Request::get('postcode'); 
    if ($queryUsername): 
     $users = User::where('username', 'LIKE', "%".$queryUsername."%")->get(); 
    elseif ($queryPostcode): 

     $usersInfo = UserProfile::where('postcode', '=', $queryPostcode)->value('user_id'); 
     $users = User::where('id', '=', "$usersInfo")->get(); 
    endif; 

    return view('view', compact('users')); 
} 
+0

何らかの理由でこれは> _ < –

+0

私はこれがuser_idによるクエリであり、1つだけでなければならないと考えています。 –

関連する問題