我有一个TypeOfVehicle
模型,其中有许多Vehicle
。
如何将所有车辆按车辆名称类型和数量进行分组,以得到这样的内容
[
'Sedan' => 10,
'SUV' => 25,
'Crossover' => 5
]
答案 0 :(得分:1)
您可以使用
$counts = DB::table('tablename')
->select('TypeOfVehicle', DB::raw('count(*) as total'))
->groupBy('TypeOfVehicle')
->get();
答案 1 :(得分:1)
计算相关模型
如果您想在没有实际加载的情况下计算关系的结果数,则可以使用withCount
方法,该方法会将{relation}_count
列放在结果模型上。
$typeOfVehicles = App\TypeOfVehicle::withCount('vehicles')->get();
foreach ($typeOfVehicles as $typeOfVehicle) {
echo $typeOfVehicle->vehicles_count;
}
答案 2 :(得分:1)
试试看,它为您提供解决方案
json_encode()
答案 3 :(得分:1)
我假设您在type
模型中拥有雄辩的关系Vehicle
,例如:
public function type()
{
return $this->belongsTo('\App\TypeOfVehicle');
}
因此,您可以通过以下方式获取数据:
$result = Vehicle::select('vehicle_type_id', DB::raw('count(vehicle_type_id) as cnt'))
->with('type') // with your type relation
->groupBy('vehicle_type_id') // group by type of vehicle
->get() // get collection from database
->pluck('cnt', 'type.name') // get only needful data
->toArray(); // cast to array if necessary