使用join的Laravel从一个表中获取值,从另一个表中获取计数

时间:2014-09-16 07:20:42

标签: join laravel count

我有3个表格brandscarsbrand_cars现在我想显示所有公司和该品牌的汽车数量

EX:品牌'a'总计2 cars,'b'有1辆这样的车

我想通过Joins

中的laravel获取此信息

现在我可以使用foreach循环获取所有品牌和数量,但我希望使用JOINS

brands
 __________________
| id |   brand    |
|-----------------|
| 10 |    a       |
| 11 |    b       |
| 12 |    c       |
| 13 |    d       |
|-----------------|

cars
 ___________________
| id |     car     |
|------------------|
|  1 |      I1     |
|  2 |      I2     |
|  3 |      I3     |
|  4 |      I4     |
|  5 |      I5     |
|------------------|

brand_cars
 ___________________________
| id |    car   |   brand  |
|--------------------------|
|  1 |     1    |    10    |
|  2 |     2    |    11    |
|  3 |     3    |    12    |
|  4 |     4    |    10    |
|--------------------------|

提前谢谢。

1 个答案:

答案 0 :(得分:1)

如果您想在Laravel中使用SQL连接,可以使用查询生成器。 http://laravel.com/docs/queries#joins

如果您想使用Eloquent ORM,可以使用以下内容。

Car 模型中,您需要使用品牌关系定义多对多。如下所示,

public function brand(){
    return $this->belongsToMany('Brand');  // This will intern use pivot table brand_car for joining.
}

如果您想要检索特定汽车的品牌,请使用以下内容。

$car = Car::findOrFail(1);  // replace 1 with id.

要在视图中打印其名称和品牌,

Name: {{$car->car}}, Brand: {{$car->brand->first()->brand}} 

我们使用first()仅检索第一个。显然,你的案件中只有一个。