您好,我們有三個實體,樂器,作曲家和曲目。樂器和作曲家與多對多的關系有關。當您單擊樂器(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 關注
- 70 瀏覽
添加回答
舉報
0/150
提交
取消