我只是想知道laravel是否有办法返回记录存在多少次口才?雄辩:现有记录的计数
我有两个表: 汽车和品牌。
汽车有字段:id
,brand_id
。品牌有de字段:id
,name
。关系在于cars.brand_id = brands.id
。
我有红色的文件,并找不到解决方案。
有没有办法,我可以有多少次品牌使用汽车的方式,让我得到这样的计数:
Suzuki: 2<br>
Opel: 4 <br>
BMW: 1<br>
etc.
我只是想知道laravel是否有办法返回记录存在多少次口才?雄辩:现有记录的计数
我有两个表: 汽车和品牌。
汽车有字段:id
,brand_id
。品牌有de字段:id
,name
。关系在于cars.brand_id = brands.id
。
我有红色的文件,并找不到解决方案。
有没有办法,我可以有多少次品牌使用汽车的方式,让我得到这样的计数:
Suzuki: 2<br>
Opel: 4 <br>
BMW: 1<br>
etc.
您可以尝试查询:
SELECT count(brands.name), brands.name
FROM cars
JOIN brands ON cats.brand_id = brands.id
使用等效雄辩
DB::table('cars')
->select(DB::raw('COUNT(brands.name), brands.name')
->join('brands', 'brands.id', '=', 'cars.id')
->groupBy('brands.name')
->get();
您应该创建一个BelongsToMany关系,然后做一个计数查询。
class Brand {
public function cars() {
return $this->belongsToMany('App\Car', 'brand_id', 'id');
}
}
然后使用它是这样的:
Brand::where('name', 'Suzuki')->cars->count();
的最好的方式做到这一点你的品牌型号的内部是用骨料:
如果你有正确的模型,你可以这样做:
$brands = Brands::with(cars)->get();
foreach ($brands as $brand){
$yourarray[$brand->name]= count($brand->cars);
}
dd($yourarray);
这会给你一个很好的数组与你的品牌和车辆的数量
我已经做了功能,但我得到的消息,[汽车]不存在? –
如果你在你的模型中声明了这个函数('public function cars()'),那么这个方法就行得通。模型的命名空间当然是正确的,这一点很重要,请首先检查。 –