Laravel - отображение данных с использованием диапазонов данных - PullRequest
0 голосов
/ 29 февраля 2020

Я хочу отображать данные на основе диапазонов в раскрывающемся списке меню. У меня в настоящее время есть единичные значения, в которых я бы выбрал значение 10, и он отобразил бы все значения, которые = 10.

Теперь я хочу У меня есть выпадающее меню с опциями 5-10, 11-15, 16-20, и я ожидаю, что он отобразит все данные в этих диапазонах. См. Код ниже

Поиск. 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');
}

Как мне удастся отобразить данные, используя данные диапазоны вместо особых значений.

1 Ответ

1 голос
/ 29 февраля 2020

Вы можете использовать функцию groupBy коллекции:

$distancesByGroup = DB::table('posts')
    ->distinct()
    ->pluck('distance')
    ->groupBy(function ($item, $key) {
        return (int) ((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

Примечание: я не проверял, но это дает вам идею.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...