我有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');
});
我希望与供应商和制造商之间建立一对多的关系,因此我将有一个制造商的精选列表,然后填充来自Pivot表中与所选制造商相关的供应商的下一个列表。
目前我的"设备"模型具有以下关系,它将它们与原始表格相关联,而不是枢轴,因此它不起作用
//5
public function manufacturer(){
return $this->belongsTo('App\Manufacturer');
}
//6
public function supplier(){
return $this->belongsTo('App\Supplier');
}
我还没有这样做过,所以我很想知道什么是最好的解决方案。 非常感谢,
答案 0 :(得分:1)
如果您希望所有供应商与单一制造商相关联,您可以使用多对多关系获取它们。
$suppliersList = $supplier->manufacturer()->suppliers();
howerver我不明白为什么设备应该与单个供应商相关联......但这取决于你。