【发布时间】:2016-08-27 21:34:24
【问题描述】:
我有 2 个表制造商和供应商,他们有多对多关系
Schema::create('manufacturers', function (Blueprint $table) {
$table->increments('id');
$table->string('name')->unique();
$table->timestamps();
});
Schema::create('suppliers', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('location');
$table->timestamps();
});
所以我创建了一个名为“manufacturer_supplier”的数据透视表,它工作正常。
Schema::create('manufacturer_supplier', function (Blueprint $table) {
$table->increments('id');
$table->integer('manufacturer_id')->unsigned()->index();
$table->integer('supplier_id')->unsigned()->index();
$table->timestamps();
$table->foreign('manufacturer_id')->references('id')->on('manufacturers')->onDelete('cascade');
$table->foreign('supplier_id')->references('id')->on('suppliers')->onDelete('cascade');
});
我的困惑来自添加一个新表“设备”
Schema::create('devices', function (Blueprint $table) {
$table->increments('id');
$table->string('serial')->unique();
$table->string('name');
$table->integer('supplier_id')->unsigned()->nullable();
$table->integer('manufacturer_id')->unsigned()->nullable();
$table->text('notes')->nullable();
$table->timestamps();
$table->foreign('supplier_id')->references('id')->on('suppliers')->onDelete('cascade');
$table->foreign('manufacturer_id')->references('id')->on('manufacturers')->onDelete('cascade');
});
我希望与每个供应商和制造商建立一对多的关系,因此我将选择制造商列表,然后使用与所选制造商相关的数据透视表中的供应商填充下一个列表。
目前我的“设备”模型具有以下关系,它将它们与原始表而不是枢轴相关联,因此它不起作用
//5
public function manufacturer(){
return $this->belongsTo('App\Manufacturer');
}
//6
public function supplier(){
return $this->belongsTo('App\Supplier');
}
我以前没有这样做过,所以我很想知道什么是最好的解决方法。 非常感谢,
【问题讨论】:
标签: laravel laravel-5 laravel-5.2