2017-04-11 62 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