列出特定项目并显示值 Laravel

List a specific item and display values Laravel

请问如何改进下面的代码。我从数据库中提取汽车品牌,然后将它们写入索引模板中。如果用户单击特定品牌,则只会显示该品牌的汽车。我想使用变量或循环改进代码,并且我需要帮助,因此我至少附上了我已经编写的内容的最小工作示例。

汽车控制器

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');

在您的 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);
}