您好我想做那样的事情:用户可以看到受欢迎的租用汽车的页面。 我几乎这样做,但我遇到了一些问题,我不知道如何形象。 我建立了多对多关系并且工作得很好。
查看:
<table class="table table-striped">
<thead>
<tr>
<th>#</th>
<th>Name Car</th>
<th>Popularity</th>
</tr>
</thead>
<tbody>
<?php $i = 1;?>
@foreach($cars as $car)
@foreach($car->rentcar as $rentcar)
<tr>
<td>{{ $i++ }}</td>
<td>{{$rentcar->name}}</td>
@foreach($car_pops as $car_pop)
<td>
@if($car_pop->total == '1')
<span class="glyphicon glyphicon-star"></span>
@elseif($car_pop->total == '2')
<span class="glyphicon glyphicon-star"></span>
<span class="glyphicon glyphicon-star"></span>
@endif
</td>
@endforeach
</tr>
@endforeach
@endforeach
</tbody>
</table>
控制器:
public function popularityCar()
{
$cars = User::with('rentcar')->get();
$car_pops = DB::table('rent_car')
->select('car_id', DB::raw('count(*) as total'))
->groupBy('car_id')
->get();
return view('user.popularityCar', ['cars' => $cars, 'car_pops' => $car_pops]);
}
在数据透视表中,用户可以租用多个同名汽车,我想只显示一个名字汽车我介意我得到奥迪和用户租用它,第二个用户也租用它但是在其他日期所以我只想显示一次汽车奥迪和使用bootstrap图标显示流行度。它几乎工作,但显示更多的汽车与同名,所以我尝试groupBy喜欢检查人气车但我有问题,我不知道如何使用它。
模特用户:
public function rentcar()
{
return $this->belongsToMany(Cars::class, 'rent_car', 'user_id', 'car_id')->withTimestamps()->withPivot('start', 'end');
}
模型车:
public function caruser()
{
return $this->belongsToMany(User::class, 'rent_car', 'car_id', 'user_id');
}
所以也许很简单的方法来查询mysql,我可以获得汽车名称并转到数据透视表以获得总计car_id。