2017-04-11 128 views
0

我正在laravel的搜索模塊中工作..當我在搜索輸入中提交關鍵字時,結果我只得到一條記錄..但我有多個用戶單一名稱。如何讓多個用戶在同一名字..我想這如何通過laravel搜索獲取多個項目/用戶5

控制器

class SearchController extends Controller 
{ 
    public function find(Request $request) 
    { 
    $search=$request->input('search-input'); 


    $getUser = User::join('personalinfos', 'users.id', '=', 'personalinfos.user_id')->where('users.firstName', 'like', '%' . $search . '%') 
     ->orWhere('users.lastName', 'like', '%' . $search . '%')->get(); 


    return view('pages/search-users',compact('getUser')); 


    } 
} 

<form class="navbar-form navbar-right hidden-sm" id="search-form" action="{{url('/find')}}" method="get"> 
     {{ csrf_field() }} 
     <div class="form-group"> 
     <i class="icon ion-android-search"></i> 
     <input type="text" class="form-control" id="search-input" name="search-input" placeholder="Search friends, photos, videos"> 
     </div> 
    </form> 

路線

Route::get('find', '[email protected]'); 
+0

是否每個用戶都有personalinfos? –

+0

我不確定你在做什麼?首先,你正在運行兩個查詢,你將第一個查詢的結果替換爲第二個,然後什麼是第一個查詢的要點:)) – Learner

+0

@Autista_z是的每個用戶都有 –

回答

1

我猜你正在努力做到這一點:

$getUser = User::join('personalinfos AS pi', 'users.id', '=', 'pi.user_id') 
       ->where('users.firstName', 'like', '%' . $search . '%') 
       ->orWhere('users.lastName', 'like', '%' . $search . '%') 
       ->select('users.firstName','users.lastName') 
       ->get(); 

如果仍然返回只有一個用戶,這意味着你的條件:

users.id = pi.user_id 

只有該用戶真的。

爲了確保運行這樣的:如果你在你的數據庫名稱相同的多個用戶

$getUser = User::where('firstName', 'like', '%' . $search . '%') 
        ->orWhere('lastName', 'like', '%' . $search . '%') 
        ->select('firstName','lastName') 
        ->get(); 

這最後一個必須返回一個以上的用戶。

祝你好運!

+0

最後一個查詢返回多個用戶,但我想加入個人信息表也​​..如何可能返回多個用戶和兩個表數據 –

+0

問題是'users.id = pi.user_id'條件,你需要有各種'user_id'代表用戶表中的各種用戶。我猜你在個人信息表中只使用了一個user_id。使用多個user_id,以便users表中的每個用戶可以在個人信息表中具有一行。 – Learner