如何从Laravel 5.6中的控制器获取数据副类别名称?

时间:2018-12-09 13:20:35

标签: php laravel

使用laravel 5.6和mysql。我的表名称为vehicles

id  name  categoryname  brandname    model
1   juy   car           toyota       121
2   gty   van           nissan       caravan
3   bgh   car           bmw          520d
4   hyu   van           ford         max
5   nhj   car           toyota       121
6   gtr   car           toyota       corolla
7   gtr   van           nissan       caravan

我正在使用以下控制器功能来显示带有品牌名称和型号名称的类别名称

$buss = DB::table('vehicles')
                    ->select('categoryname','brandname','modelname', DB::raw('count(*) as total'))
                    ->orderBy('categoryname', 'asc')
                    ->groupBy('modelname')
                    ->get();

                    return view('vehicles.bus')->withBuss($buss);

并使用以下刀片文件显示数据

<?php $cat = ""; ?>
@foreach($vehicles->unique('modelname') as $vehicle)
   @if($vehicle->categoryname != $cat )
            <?php $cat = $vehicle->categoryname; ?>
             {{$cat}}
            <br><br>
     @endif
     <ul>
    <li>{{$vehicle->brandname}}</li> <br>

  </ul>
@endforeach

这显示如下数据,
汽车
丰田
121(2)
丰田
花冠(1)
宝马
520d(1)


货车
日产
carvan(1)
福特
最大(1)

但是现在我需要进行一些更改,这意味着首先要使用以下控制器功能来指定类别名称,

$names = Vehicle::groupBy('categoryname')->select('id', 'categoryname', \DB::raw('COUNT(*) as cnt'))->get();

和刀片文件

@foreach($names as $name)
        <a href="{{ route('vehicles.brand') }}">{{$name->categoryname}}</a> 
    @endforeach

,现在类别数据显示为带有超链接,如下所示,
汽车
货车

现在,当我单击上面的类别名称时,需要显示vehicles表中与类别名称相关的数据。以下控制器正在针对汽车类别手动工作

$car = DB::table('vehicles')
                    ->select('categoryname','brandname','modelname', DB::raw('count(*) as total'))
                    ->orderBy('categoryname', 'asc')
                    ->groupBy('modelname')

                    ->where('categoryname', 'car')
                    ->get();

                    return view('vehicles.bus')->withCar($car);

但是当我单击上面的类别名称时,我找不到如何在控制器中自动设置每个类别名称数据的方法吗?你能给我一些解决方法吗?

1 个答案:

答案 0 :(得分:1)

首先,这个问题不容易理解,您应该对其进行编辑并使问题更易于理解。

我了解到您需要显示在右上方链接中点击了categoryname的车辆吗?

如果是这样,则必须像这样更改一些代码。

首先,您必须像这样将categoryname添加到您的网址中

    @foreach($names as $name)
        <a href="{{ route('vehicles.brand',['cat' => $name->categoryname]) }}">{{$name->categoryname}}</a> 
    @endforeach

然后在您的路线中必须有类似的东西

Route::method('your/route/url/{cat}','YourController@yourMethod)->name('vehicle.brand');

重要的部分是将路径参数{cat}添加到您的路径中,其余的取决于您。

然后在您的控制器中获得这样的参数

public function yourMethod(Request $request, $cat) {
    //finally you add the $cat variable to your query like this
    $car = DB::table('vehicles')
                ->select('categoryname','brandname','modelname', DB::raw('count(*) as total'))
                ->orderBy('categoryname', 'asc')
                ->groupBy('modelname')

                ->where('categoryname', $cat)
                ->get();

                return view('vehicles.bus')->withCar($car);
}

然后,您现在可以通过categoryname

来过滤查询

如果这不是您所需要的,请重新提出您的问题。