Laravel 5 - 根据模型和相关模型ID获得特定的多对多关系

时间:2017-08-17 09:35:34

标签: php laravel laravel-5 eloquent

我有TagAttendee雄辩的模特,他们处于多对多的关系中。数据透视表还有两个属性 - value_intvalue_string。我的Attendee模型如下所示:

class Attendee extends Model
{
    public $timestamps = false;

    protected $fillable = [
        'event_id'
    ];

    public function tags() {
        return $this->belongsToMany('App\Models\Tag', 'attendee_tag', 'attendee_id', 'tag_id')
            ->withPivot(['value_string', 'value_int']);
    }

    public function scoreTagValue($tag_id) {
        return $this->tags->where('tag_id', '=', $tag_id)->first();
    }

}

我想要的是根据Attendee模型和变量tag_id获取数据透视值,因此我写了scoreTagValue函数,但它总是返回null而且我不知道为什么:(我这样称呼它: $attendee->scoreTagValue($tag_id)。谢谢你的帮助:)

1 个答案:

答案 0 :(得分:0)

您需要访问关系,而不是属性:

public function scoreTagValue($tag_id) {
    return $this->tags()->where('tag_id', '=', $tag_id)->first();
}

此外,according to the docswithPivot()不接受数组,因此:

->withPivot('value_string', 'value_int');