2017-03-06 73 views
0

我没有得到任何结果,从视图中的搜索表单获取俱乐部。在Laravel搜索Methode控制器

这里我的“搜索”控制器

public function getClubs(Request $request){ 

     if($request->has('recherche')){ 

      $clubs = Structure::where('nom_structure' , 'LIKE', '%'. $request .'%')->where('type_structure_id' , '=' , 4)->get(); 



     }else{ 
      $clubs = Structure::where('type_structure_id' , 4)->paginate(10); 
     } 

     dd($clubs); 

     return view('structure/clubs' , compact('clubs')); 

    } 

我想带一个俱乐部的确切名称,但仍然没有结果,某人有一个主意,让搜索梅索德谁的作品?在此先感谢

回答

1

你通过在搜索$请求 - >输入(“RECHERCHE”)或$请求 - > RECHERCHE

公共职能getClubs(请求$要求){

整个请求改变$请求
if($request->has('recherche')){ 

    $clubs = Structure::where('nom_structure' , 'LIKE', '%'. $request->recherche .'%')->where('type_structure_id' , '=' , 4)->get(); 

}else{ 
    $clubs = Structure::where('type_structure_id' , 4)->paginate(10); 
} 

dd($clubs); 

return view('structure/clubs' , compact('clubs')); 

} 

一个方便的调试功能是toSql(),它会告诉你实际的SQL语句

$clubs = Structure::where('nom_structure' , 'LIKE', '%'. $request->recherche .'%')->where('type_structure_id' , '=' , 4)->toSql(); 

编辑使用多个何在

$clubs = Structure::where('nom_structure' , 'LIKE', '%'. $request->recherche .'%') 
      ->orWhere('club_name' , 'LIKE' , '%'. $request->recherche .'%') 
      ->whereHas('categories', function ($query) use ($request) { 
       $query->where('category_name','LIKE' , '%'. $request->recherche .'%'); 
     }) 
      ->where('type_structure_id' , '=' , 4) 
      ->get(); 

而且我个人的如何做到这一点更倾向于将

$search = $request->get('recherche'); 
    if ($search) { 
     $query = Structure::Where('nom_structure', 'like', "%$search%"); 
    } else { 
     $query = Structure::select(); 
    } 

    $clubs = $query->where('type_structure_id', 4)->paginate(10) 
     ->appends(['recherche' => $search]); 
+0

非常感谢!它正在工作!如果我想用多个搜索参数构建这个函数。例如,用户可以通过俱乐部的名称或俱乐部的号码进行搜索?我是否需要在声明中添加或条件? –

+1

是的,你只是使用orWhere,我已经更新了我的答案来显示这个,并且还添加了一个whereHas,它向你展示了如何搜索关系,如果你发现有用,你可以在https://laravel.com/docs/找到更多信息。 5.4 /雄辩关系 – rchatburn

+0

非常感谢!!!唯一的问题是我的结果似乎没有得到这个条件 - > where('type_structure_id','=',4),实际上我试过了,它也显示我也是type_structure,它们不等于ID 4。我只想显示type_structure_id = 4的俱乐部。为什么条件不适用于查询? –

1

在你的情况,$request是一个对象。您只需输入搜索词:

$clubs = Structure::where('nom_structure' , 'LIKE', '%'. $request->input('recherche') .'%')->where('type_structure_id' , '=' , 4)->get();