为了账号安全,请及时绑定邮箱和手机立即绑定

如何返回数据槽表拉拉维尔

如何返回数据槽表拉拉维尔

PHP
泛舟湖上清波郎朗 2022-09-24 16:46:25
您好,我们有三个实体,乐器,作曲家和曲目。乐器和作曲家与多对多的关系有关。当您单击乐器(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


查看完整回答
反对 回复 2022-09-24
  • 1 回答
  • 0 关注
  • 83 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号