Php Laravel 5-从透视表额外属性获取属性
我在零件和材料模型之间有多对多关系。它与枢轴工作台配合得很好 现在,我刚刚在pivot表中添加了另一列,名为“provider_id”。我需要的是,当用户向零件添加材料时,他也会选择该材料的供应商(因为材料供应商也是多对多关系),因此当我这样做时: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 }}
@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
}
谢谢