Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 5-从透视表额外属性获取属性_Php_Laravel_Many To Many_Relationships - Fatal编程技术网

Php Laravel 5-从透视表额外属性获取属性

Php Laravel 5-从透视表额外属性获取属性,php,laravel,many-to-many,relationships,Php,Laravel,Many To Many,Relationships,我在零件和材料模型之间有多对多关系。它与枢轴工作台配合得很好 现在,我刚刚在pivot表中添加了另一列,名为“provider_id”。我需要的是,当用户向零件添加材料时,他也会选择该材料的供应商(因为材料供应商也是多对多关系),因此当我这样做时: @foreach($parts as $key => $value) @foreach($value->materials as $mkey => $mvalue) {{ $mvalue->provider_id }}

我在零件和材料模型之间有多对多关系。它与枢轴工作台配合得很好

现在,我刚刚在pivot表中添加了另一列,名为“provider_id”。我需要的是,当用户向零件添加材料时,他也会选择该材料的供应商(因为材料供应商也是多对多关系),因此当我这样做时:

@foreach($parts as $key => $value)
 @foreach($value->materials as $mkey => $mvalue)
  {{ $mvalue->provider_id }}
 @endforeach
@endforeach
我得到提供者ID,没关系。但我想知道它的名字。类似于$mvalue->provider->name。我该怎么做?

以下是我的数据透视表迁移:

Schema::create('material_part', function (Blueprint $table) {

    $table->integer('part_id')->unsigned();
    $table->foreign('part_id')->references('id')
        ->on('parts')->onDelete('cascade');

    $table->integer('material_id')->unsigned();
    $table->foreign('material_id')->references('id')
        ->on('materials')->onDelete('cascade');

    $table->integer('provider_id')->unsigned();
    $table->foreign('provider_id')->references('id')
        ->on('providers')->onDelete('cascade');

    $table->timestamps();
  });
零件型号:

class Part extends Model
{
  public function materiales(){
   return $this->belongsToMany('App\Material', 'material_part')->withPivot('part_id', 'provider_id');
  }
}
public function materials(){
  return $this->belongsToMany('App\Material', 'material_provider');
}
我在材料模型中也有相同的关系

提供商型号:

class Part extends Model
{
  public function materiales(){
   return $this->belongsToMany('App\Material', 'material_part')->withPivot('part_id', 'provider_id');
  }
}
public function materials(){
  return $this->belongsToMany('App\Material', 'material_provider');
}
每个关系都很好,但每个部分的每个材料都有一个供应商

谢谢

编辑:

我正在尝试这个(还没有成功)


}

从您使用的
pivot->propertyName

@foreach($parts as $key => $value)
 @foreach($value->materials as  $mvalue)
   {{ $mvalue->pivot-> provider_id }}
 @endforeach
@endforeach
希望这有帮助

我刚收到:

public function materiales(){
  return $this->belongsToMany('App\Material', 'material_part')
            ->withPivot('part_id', 'provider_id')
            ->join('providers', 'material_part.provider_id', '=', 'providers.id')
            ->select('providers.name as pivot_providers_name', 'materials.*');

  //SELECT * FROM `material_part` INNER JOIN providers ON material_part.provider_id = providers.id
}

谢谢