您好,我们有三个实体,乐器,作曲家和曲目。乐器和作曲家与多对多的关系有关。当您单击乐器(id)时,我想显示为该乐器编写一些“曲目”的作曲家的数量。我使用这个代码,但我认为这不是最干净的原因,而且我没有很好地理解Eloquent和他的方法,你能帮助我吗?p.s它的工作原理,但我没有填满好。我的仪器控制器:public function getInstrument( Instrument $instrument){$id_compositori= ComposerInstrument::where('instrument_id', $instrument->id)->pluck('composer_id')->toArray();$compositori = Composer::whereIn('id',$id_compositori)->get();return view('instrumentcomposer',compact(['id_compositori','instrument','compositori']));}我的观点:@foreach($compositori as $composer)<div class="col-lg-3 col-md-4 col-6"> <img class="img-fluid img-thumbnail" src=" https://i.picsum.photos/id/619/200/300.jpg?grayscale" alt=""><h2>Wrote by {{ $composer->name }} </h2> </div>@endforeach谢谢编辑轨道模型class Track extends Model{ public function instrument() { return $this->belongsTo(Instrument::class,'instrument_id','id'); } public function composer() { return $this->belongsTo(Composer::class,'composer_id','id'); }}仪器型号class Instrument extends Model{ public function composers1() { return $this->belongstoMany(ComposerInstrument::class); } public function tracks() { return $this->hasMany(Track::class); } public function composers() { return $this->hasMany(Composer::class); }作曲家模型class Composer extends Model{ public function instruments() { return $this->belongstoMany(ComposerInstrument::class); } public function tracks() { return $this->hasMany(Track::class); } public function instruments2() { return $this->hasMany(Instrument::class); } }数据透视表模型class ComposerInstrument extends Model{ protected $table = 'composer_instrument'; protected $fillable = ['composer_id','instrument_id']; public function instruments() { return $this->hasMany(Instrument::class); } public function composers() { return $this->hasMany(Composer::class); }}对不起,我很新手
1 回答

白猪掌柜的
TA贡献1893条经验 获得超10个赞
所属的第一个参数 ToMany() 应引用它与透视模型具有这种关系的模型。
将模型中的方法更改为:composers()Instrument
public function composers()
{
return $this->belongsToMany(Composer::class);
}
然后,您的控制器代码可以是:
public function getInstrument(Instrument $instrument)
{
return view('instrumentcomposer', compact('instrument'));
}
最后,你的边栏选项卡文件将是:
@foreach($instrument->composers as $composer)
<div class="col-lg-3 col-md-4 col-6">
<img class="img-fluid img-thumbnail" src="https://i.picsum.photos/id/619/200/300.jpg?grayscale" alt="">
<h2>Wrote by {{ $composer->name }} </h2>
</div>
@endforeach
- 1 回答
- 0 关注
- 83 浏览
添加回答
举报
0/150
提交
取消