我正在建立一个网站,公司的人每事件 得分。 事件按城市排序。
因此,通过示例,某人可以完成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
我只想查看我们现在正在观看的事件的分数(你可以在网址栏中看到id,我用红色箭头标记了id,现在我怎么样?在我的视图中只询问显示特定事件的分数?
谢谢!
答案 0 :(得分: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
答案 1 :(得分:0)
您需要在模型中或在您的关系中更具体地指定您想要的枢轴字段。
这是一个你可以做的例子
function events(){
return $this->belongsToMany('Events', 'person_events', 'person_id', 'event_id')->withPivot('score');
}
现在您可以按如下方式访问此分数呼叫枢轴。
@foreach($persons->events as $event)
{{ $event->pivot->score}}
@endforeach
上述foreach循环只是迭代所有人物事件并从数据透视表中获取该特定事件的分数。