使用 3 个参数 laravel 中的一个或多个在 table 中搜索
Search in table using one or more of 3 parameters laravel
我有搜索页面,有 3 个 select 列表作为输入。当用户 select 一个或多个选项并单击搜索按钮时,页面将显示匹配一个或多个此参数的结果并忽略空参数。
我尝试使用:
if($request->country != null)
{
$searchResult = DB::table('table_name')->where('country', $request->country);
}
if($request->name != null)
{
$searchResult = DB::table('table_name')->where('name', $request->name );
}
if($request->city != null)
{
$searchResult = DB::table('table_name')->where('city', $request->city);
}
当一个或多个参数为空时如何显示结果。
并将结果合并到一个集合中。
或者有没有比这更好的解决方案。
提前致谢
简单使用whereOr()
逻辑,然后按国家、名称或城市。这样会自动处理合并成一个集合的问题。
$searchResult = DB::table('table_name')->where('country', $request->country)
->orWhere('name', $request->name )
->orWhere('city', $request->city);
为了避免空参数,使用when()
函数,只有当条件为真时才会执行。
$searchResult = DB::table('table_name')
->when($request->country, function ($query) use ($request) {
$query->orWhere('country', $request->country);
})->when($request->name, function ($query) use ($request) {
$query->orWhere('name', $request->name);
})->when($request->city, function ($query) use ($request) {
$query->orWhere('city', $request->city);
});
如果您想跳过不可用的搜索参数,您可以使用。
$query=DB::table('table_name');
switch (true){
case isset($request->country);
$query->where('country',$request->country);
continue;
case isset($request->city);
$query->where('city',$request->city);
continue;
case isset($request->name);
$query->where('name',$request->name);
}
$result= $query->get();
我有搜索页面,有 3 个 select 列表作为输入。当用户 select 一个或多个选项并单击搜索按钮时,页面将显示匹配一个或多个此参数的结果并忽略空参数。
我尝试使用:
if($request->country != null)
{
$searchResult = DB::table('table_name')->where('country', $request->country);
}
if($request->name != null)
{
$searchResult = DB::table('table_name')->where('name', $request->name );
}
if($request->city != null)
{
$searchResult = DB::table('table_name')->where('city', $request->city);
}
当一个或多个参数为空时如何显示结果。 并将结果合并到一个集合中。 或者有没有比这更好的解决方案。
提前致谢
简单使用whereOr()
逻辑,然后按国家、名称或城市。这样会自动处理合并成一个集合的问题。
$searchResult = DB::table('table_name')->where('country', $request->country)
->orWhere('name', $request->name )
->orWhere('city', $request->city);
为了避免空参数,使用when()
函数,只有当条件为真时才会执行。
$searchResult = DB::table('table_name')
->when($request->country, function ($query) use ($request) {
$query->orWhere('country', $request->country);
})->when($request->name, function ($query) use ($request) {
$query->orWhere('name', $request->name);
})->when($request->city, function ($query) use ($request) {
$query->orWhere('city', $request->city);
});
如果您想跳过不可用的搜索参数,您可以使用。
$query=DB::table('table_name');
switch (true){
case isset($request->country);
$query->where('country',$request->country);
continue;
case isset($request->city);
$query->where('city',$request->city);
continue;
case isset($request->name);
$query->where('name',$request->name);
}
$result= $query->get();