我有一种类型的汽车,品牌和型号表。用户选择类型的汽车时,会得到奥迪,宝马,梅赛德斯。选择奥迪时,只会获取奥迪等车型A1,A2,A3。如果宝马赢取X6,X4型号。我有三张桌子 1.用汽车输入。 (目前只有后车可能是自行车) 2.马克 3.型号
如何用Laravel雄辩地连接这三个表?
答案 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 :(得分: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;