GroupLy通过使用laravel雄辩的关系

时间:2019-11-15 09:21:02

标签: laravel eloquent eloquent--relationship

我有一个TypeOfVehicle模型,其中有许多Vehicle
如何将所有车辆按车辆名称类型和数量进行分组,以得到这样的内容

[
   'Sedan'     => 10,
   'SUV'       => 25,
   'Crossover' => 5
]

4 个答案:

答案 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