dongwei1895 2014-09-01 10:00
浏览 119
已采纳

从Laravel中的数据透视表获取特定数据部分

I'm doing a website where companies have persons which have scores per event. And the events are ordered by city.

So by example someone can do 4 events, so they get a score for each event.

I'm using a pivot table to save the scores. ( here's a screenshot )

enter image description here

Now i'm loading all persons for a certain event with the following query.

$data['companies'] = Event::find($id)->city->companies;

And i'm showing them using the following structure in my blade file

@foreach($companies as $company)
   {{ $company->name }}
        @foreach($company->persons as $person)
           {{ $person->firstname }}
           {{ $person->eventscore }}
        @endforeach
    @endforeach

The person->eventscore is the link to the pivot table. And it's working but it's giving me the scores of that person for ALL the events.

I only want to see the score for the event that we are watching now ( you can see the id in the url bar, and i marked the id with a red arrow, Now how can i? In my view ask to only show to score for the specific event?

enter image description here

Thank you!

  • 写回答

2条回答 默认 最新

  • donglu6303 2017-03-22 10:12
    关注

    There need to a little change in your query.. See the below example.

    class Person extends Eloquent {
        public function events()
        {
            return $this->belongsToMany('Event', 'person_event', 'event_id', 'person_id')->withPivot('id','score');
        }
    }
    
    class Event extends Eloquent {
        public function persons()
        {
            return $this->belongsToMany('Person', 'person_event', 'person_id', 'event_id')->withPivot('id','score');
        }
    }
    

    Now to loading all persons for a certain event, query is ..

    $event_id = 1;
    $persons = Person::with('events')->whereHas('events', function($q) use ($event_id){$q->where('event_id',$event_id);})->get();
    

    In view...

    @foreach($persons->events as $event)
        {{ $event->pivot->score}}
    @endforeach
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 Abaqus打不开cae文件怎么办?
  • ¥20 双系统开机引导中windows系统消失问题?
  • ¥15 小程序准备上线,软件开发公司需要提供哪些资料给甲方
  • ¥15 关于生产日期批次退货退款,库存回退的问题
  • ¥15 手机应用的时间可以修改吗
  • ¥15 docker 运行OPEN-webui异常
  • ¥15 麒麟系统如何删除光盘刻录痕迹
  • ¥15 recipe通过gem协议传的是什么
  • ¥15 TS2307: Cannot find module 'cc'.
  • ¥15 100小时学会sap 书上pp章节5.22,标准成本计算逻辑?