Laravel-使用数据范围显示数据

问题描述 投票:0回答:1

我想基于下拉菜单列表中的范围显示数据。我目前有一个奇异值,我将选择值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');
}

我将如何使用数据范围而不是奇异值来显示数据。

php laravel
1个回答
0
投票

您可以使用集合的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

注意:我还没有测试过,但是它给了你这个主意。

© www.soinside.com 2019 - 2024. All rights reserved.