Mysql表关系 - 迁移LARAVEL

时间:2016-08-28 21:17:31

标签: mysql laravel migration

我正在用laravel创建我的迁移,我有这个疑问:

我有这两张桌子:

Cars: ID || || BRAND_NAME || MODEL || YEAR

Brand: ID || NAME

所以,如果我想将Brand ID保存在我的表Cars中,我会使用类似的内容:

$table->integer('brand_id')->unsigned();
$table->foreign('brand_id')->references('id')->on('brand');

它与表单一起保存的所有信息现在都有效。但是,如果我想在BRAND_NAME表中保存BRAND_ID而不是Cars。可能吗?我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

如果您正在演绎:

$table->string('BRAND_NAME');
$table->foreign('BRAND_NAME')->references('NAME')->on('brand');

除非您的品牌名称字段已被编入索引,否则答案为否。

如果您在Cars表上使用品牌ID,我认为存储名称是无用的,但我认为唯一的方法是在保存汽车模型之前进行查询以获取品牌名称,像:

$car = new Car;
$car->brand_id = 1;
$car->brand_name = Brand::find(1)->name;
$car->save();

您可以保持现在的模型并使用Car模型中的hasOne关系,这样您就可以获得每个汽车模型的所有品牌实际数据。要做到这一点,您只需要在汽车模型类中添加如下方法:

public function brand()
{
 return $this->belongsTo('App\Car'); //<--- Put your car model path there
}

通过这种方式,您可以使用以下内容检索所有相关品牌数据的Car车型:

$user = User::where("id", "=", 1)->with("brand")->first();

查看有关https://www.laravel.com/docs/5.3/eloquent-relationships

中关系的更多信息