Eloquent:现有记录的计数

时间:2017-03-09 12:25:32

标签: php laravel eloquent

我只是想知道在laravel中是否有一种方式可以用一个雄辩的方式返回记录存在多少次?

我有两张桌子: 汽车和品牌。

汽车有de field:idbrand_id。品牌有de fields:idname。关系在于cars.brand_id = brands.id

我有红色的文件,无法找到解决方案。

有没有一种方法可以让汽车使用一个品牌多少次,这样我就可以得到这样的数量:

Suzuki: 2<br>
Opel: 4 <br>
BMW: 1<br>
etc.

3 个答案:

答案 0 :(得分:0)

您可以尝试查询:

SELECT count(brands.name), brands.name
FROM cars
JOIN brands ON cats.brand_id = brands.id

使用等效的Eloquent

DB::table('cars')
->select(DB::raw('COUNT(brands.name), brands.name')
->join('brands', 'brands.id', '=', 'cars.id')
->groupBy('brands.name')
->get();

答案 1 :(得分:0)

您应该创建BelongsToMany关系,然后在查询中进行计数。

class Brand {

public function cars() {
    return $this->belongsToMany('App\Car', 'brand_id', 'id');
}
}

然后像这样使用它:

Brand::where('name', 'Suzuki')->cars->count();

在Brand模型中执行此操作的最佳方法是使用Aggregates:

Retrieving Aggregates

答案 2 :(得分:0)

如果你有合适的型号,你可以这样做:

$brands = Brands::with(cars)->get();

    foreach ( $brands as $brand){
        $yourarray[$brand->name]= count($brand->cars);
    }

dd($yourarray);

这将为您提供一个包含您的品牌和汽车数量的精彩数组