2017-03-09 75 views
0

我只是想知道laravel是否有办法返回记录存在多少次口才?雄辩:现有记录的计数

我有两个表: 汽车和品牌。

汽车有字段:id,brand_id。品牌有de字段:id,name。关系在于cars.brand_id = brands.id

我有红色的文件,并找不到解决方案。

有没有办法,我可以有多少次品牌使用汽车的方式,让我得到这样的计数:

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

回答

0

您可以尝试查询:

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(); 
0

您应该创建一个BelongsToMany关系,然后做一个计数查询。

class Brand { 

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

然后使用它是这样的:

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

的最好的方式做到这一点你的品牌型号的内部是用骨料:

Retrieving Aggregates

+0

我已经做了功能,但我得到的消息,[汽车]不存在? –

+0

如果你在你的模型中声明了这个函数('public function cars()'),那么这个方法就行得通。模型的命名空间当然是正确的,这一点很重要,请首先检查。 –

0

如果你有正确的模型,你可以这样做:

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

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

dd($yourarray); 

这会给你一个很好的数组与你的品牌和车辆的数量