我只是想知道在laravel中是否有一种方式可以用一个雄辩的方式返回记录存在多少次?
我有两张桌子: 汽车和品牌。
汽车有de field:id
,brand_id
。品牌有de fields:id
,name
。关系在于cars.brand_id = brands.id
。
我有红色的文件,无法找到解决方案。
有没有一种方法可以让汽车使用一个品牌多少次,这样我就可以得到这样的数量:
Suzuki: 2<br>
Opel: 4 <br>
BMW: 1<br>
etc.
答案 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:
答案 2 :(得分:0)
如果你有合适的型号,你可以这样做:
$brands = Brands::with(cars)->get();
foreach ( $brands as $brand){
$yourarray[$brand->name]= count($brand->cars);
}
dd($yourarray);
这将为您提供一个包含您的品牌和汽车数量的精彩数组