【问题标题】:One-To-Many Relation with Pivot Table与数据透视表的一对多关系
【发布时间】: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


    【解决方案1】:

    如果您希望所有供应商与单个制造商关联,您可以使用多对多关系获取它们。

    $suppliersList = $supplier->manufacturer()->suppliers();

    但是我不明白为什么设备应该与单个供应商关联....但这取决于您。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-29
      • 1970-01-01
      • 2021-09-05
      • 1970-01-01
      相关资源
      最近更新 更多