【问题标题】:Getting specific part of data from pivot table in Laravel从 Laravel 中的数据透视表中获取数据的特定部分
【发布时间】:2014-09-01 10:00:54
【问题描述】:

我正在做一个网站,公司有人员,每个事件都有分数。 事件按城市排序。

例如,某人可以进行 4 项活动,因此他们可以为每个活动获得分数。

我正在使用数据透视表来保存分数。 (这里是截图)

现在我正在使用以下查询为某个事件加载所有人。

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

我在我的刀片文件中使用以下结构向它们展示

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

person->eventscore 是到数据透视表的链接。它很有效,但它给了我那个人在所有事件中的分数。

我只想查看我们现在正在观看的事件的分数(您可以在 url 栏中看到 id,我用红色箭头标记了 id,现在我该怎么做?在我看来,只要求显示为特定事件得分?

谢谢!

【问题讨论】:

    标签: php laravel orm eloquent


    【解决方案1】:

    您的查询需要稍作改动。请参见下面的示例。

    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');
        }
    }
    

    现在要加载某个事件的所有人,查询是..

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

    在视图中...

    @foreach($persons->events as $event)
        {{ $event->pivot->score}}
    @endforeach
    

    【讨论】:

      【解决方案2】:

      您需要在模型中或更具体地在您的关系中指定您想要的数据透视字段。

      这只是一个你可以做的例子

      function events(){
      
      return $this->belongsToMany('Events', 'person_events', 'person_id', 'event_id')->withPivot('score');
      
      }
      

      现在您可以按如下方式访问此分数调用枢轴。

      @foreach($persons->events as $event)
      
          {{ $event->pivot->score}}
      
      @endforeach
      

      上面的 foreach 循环只是遍历所有人员事件并从数据透视表中获取该特定事件的分数。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-10-16
        • 1970-01-01
        • 2019-07-25
        • 1970-01-01
        • 2021-04-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多