我想基于下拉菜单列表中的范围显示数据。我目前有一个奇异值,我将选择值10,它将显示所有等于10的值。
现在,我希望有一个带有5-10、11-15、16-20选项的下拉菜单,我希望它显示这些范围内的所有数据。参见下面的代码
Search.php
<select name="distance" id="distance" class="form-control input-lg dynamic" data-dependent="state">
<option value="">Choose an item</option>
@foreach($distances as $distance)
<option value="{{ $distance }}">{{ $distance }}</option>
@endforeach
</select>
Search.Controller.php
public function index(Request $request)
{
$distances = DB::table('posts')->select('distance')->distinct()->get()->pluck('distance');
$postsInRange = $request->has('distance')
? Post::where('distance', $request->distance)->get()
: [];
return view('Pages.search', [
'distances' => $distances,
'posts' => $postsInRange
]);
}
public function store(Request $request)
{
// This will return all request data to your screen.
return $request->all();
return view('Pages.search');
}
我将如何使用数据范围而不是奇异值来显示数据。
您可以使用集合的groupBy
功能:
$distancesByGroup = DB::table('posts')
->distinct()
->pluck('distance')
->groupBy(function ($item, $key) {
return (int) $item / 5;
});
在您的刀片上:
@foreach($distancesByGroup as $group => $distances)
<optgroup label="{{ $group * 5 }} - {{ ($group + 1) * 5 }}">
@foreach($distances as $distance)
<option value="{{ $distance }}">{{ $distance }}</option>
@endforeach
@endforeach
注意:我还没有测试过,但是它给了你这个主意。