如何连接Car_type,Model和Mark Car Laravel MySQL

时间:2019-03-14 12:30:59

标签: mysql laravel eloquent relational-database

我有一种类型的汽车,品牌和型号表。用户选择类型的汽车时,会得到奥迪,宝马,梅赛德斯。选择奥迪时,只会获取奥迪等车型A1,A2,A3。如果宝马赢取X6,X4型号。我有三张桌子 1.用汽车输入。 (目前只有后车可能是自行车) 2.马克 3.型号

如何用Laravel雄辩地连接这三个表?

2 个答案:

答案 0 :(得分:0)

--- car_types ---
id        name
1         sedan
2         hatchback
3         sport
4         suv

-- car_brands ---
id        name
1         bmw
2         mercedes
3         audi

-- car_models --
id        brand_id    model_name  car_type
1         3           A1          1
2         3           A2          1
3         3           A3          1
4         3           Q7          4
5         1           X5          4
6         1           X6          4
7         1           X7          4
8         2           AMG         3
9         3           A1          2


-- cars --
id model_id brand_id model_year name             ...other fields
1  1        3        2018       Audi A1 1.0 2018
2  3        3        2017       Audi A3 1.6 2017

on cars table brand_id* is optional foreign key as shortcut for reaching car's brand.

关系:

  1. 汽车类型有很多汽车模型。 (外国语言:car_models.car_type> car_types.id)
  2. 汽车品牌有很多汽车模型。 (外国语言:car_models.brand_id> car_brands.id)
  3. 汽车属于汽车模型。 (外国语言:cars.model_id> car_models.id)
  4. 汽车属于汽车品牌。 (外国语言:cars.brand_id> car_brands.id)

答案 1 :(得分:0)

假设您有模型

CarType (汽车类型表) CarBrand (用于car_brands表和 CarModel 用于car_models表

您可以使用雄辩的人际关系实现这一目标

在您的CarType模型中

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class CarType extends Model
  {
    /**
     * Get the brands for the car .
     */
    public function brands()
  {
    return $this->hasMany('App\CarBrand');
  }
}

在您的CarBrand模型中,您可以使用来获取品牌所属的汽车类型

<?php

 namespace App;

 use Illuminate\Database\Eloquent\Model;

 class CarBrand extends Model
 {
   /**
   * Get the car that owns the brand.
   */
  public function carType()
  {
    return $this->belongsTo('App\CarType');
  }
}

例如,您可以

$car = Car->find(1); // to get car with ID 1.
$brands = $car->brands; // brands of the selected car. You can loop through now

此外,对于品牌,您可以做

$brand = Brand->find(1) // For Brand ID 1
$car = $brand->carType;

您可以选中Eloquent Relationships