Перечислите определенный элемент c и отобразите значения Laravel - PullRequest
0 голосов
/ 03 марта 2020

Я хотел бы спросить, как улучшить следующий код. Я извлекаю марки автомобилей из базы данных, а затем записываю их в шаблон индекса. Если пользователь нажимает на указанную марку c, отображаются только автомобили этой марки. Я хотел бы улучшить код, используя переменные или цикл, и мне нужна помощь в этом, поэтому я приложил хотя бы минимальный рабочий пример того, что я уже написал.

CarController

public function index()
    {
        $cars = Car::latest()->get();
        $carsgroup = Car::whereNotNull('znacka')->groupBy('znacka')->orderBy('znacka', 'ASC')->get();

        return view('cars.index')
            ->with('cars', $cars)
            ->with('carsgroup', $carsgroup);

        }

public function renault()
    {
        $cars = Car::select()->where('znacka', 'Renault')->get();
        $carsgroup = Car::whereNotNull('znacka')->groupBy('znacka')->orderBy('znacka', 'ASC')->get();

        return view('cars.index')
            ->with('cars', $cars)
            ->with('carsgroup', $carsgroup);
    }

index.blade. php

<div class="list-group mb-5">
         <a href="{{url('cars')}}" class="list-group-item">Vše</a>
            @foreach($carsgroup as $group)
               <a href="{{str_replace('S','Š',ucfirst(strtolower($group->znacka))) }}" class="list-group-item">{{ $group->znacka }}</a>
            @endforeach
         </div>

Маршрут

Route::get('Renault', 'CarController@renault');

1 Ответ

0 голосов
/ 03 марта 2020

В вашем routes/web.php вы можете добавить additional parameter, как это. Если вам нужна другая структура URL, вам, возможно, придется немного ее скорректировать:

Route::get('cars/{brand}', 'CarController@carsbybrand');

Этот parameter может быть таким же образом доступен в вашем controller:

public function carsbybrand( $brand )
{
    $cars = Car::select()->where('znacka', $brand)->get();
    $carsgroup = Car::whereNotNull('znacka')->groupBy('znacka')->orderBy('znacka', 'ASC')->get();

    return view('cars.index')
        ->with('cars', $cars)
        ->with('carsgroup', $carsgroup);
}
...