Laravel:如何获取特定记录的数据透视数据

时间:2015-03-03 15:11:19

标签: laravel laravel-4

从文档中我看到->pivot->就像这样使用

@foreach($program->attendees as $attendee)
        {{$attendee->pivot->paid;}}
@endforeach

我想找到一个特定$attendee的支点数据,就像这样......

$program->attendees->find($attendee)->pivot->paid;

但是我收到错误:试图获取非对象的属性

我不知道出了什么问题,因为@foreach版本有效。如果我跑了   {{$program->attendees->find($attendee)}}

我得到了

{"id":"1","created_at":"2015-03-02 21:35:30","updated_at":"2015-03-02 21:35:30","first_name":"Chris","last_name":"Griffin","birthday":"2010-10-08","media_release":"1","food_allergies":"peanuts","special_care":"","user_id":"2","pivot":{"scheduled_program_id":"1","attendee_id":"1","paid":"0"}} 0 

看起来像枢轴数据......

3 个答案:

答案 0 :(得分:1)

在以下行中查看您的查找方法:

$program->attendees->find($attendee)->pivot->paid;

它需要id值来查询你的模型,然后获得支点。您是否尝试使用$attendee->id值?

$program->attendees->find($attendee->id)->pivot->paid;

答案 1 :(得分:1)

问题在于你是在循环中进行的,而不是每个程序实际上都有一个具有该id的与会者。

这应该解决它:

@foreach($programs as $program)
    @if($a = $program->attendees->find($attendee))
        {{ $a->pivot->paid }}
    @endif
@endforeach

顺便提一下,我注意到输出结尾的0。这可能是第二个没有这个id参加者的节目。

答案 2 :(得分:0)

定义关系时,您还应该应用withPivot()方法,例如:

public function attendees(){
    return $this->belongsToMany('Attendee')->withPivot('paid', 'other_pivot_column');
}