我有Tag
和Attendee
雄辩的模特,他们处于多对多的关系中。数据透视表还有两个属性 - value_int
和value_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)
。谢谢你的帮助:)
答案 0 :(得分:0)
您需要访问关系,而不是属性:
public function scoreTagValue($tag_id) {
return $this->tags()->where('tag_id', '=', $tag_id)->first();
}
此外,according to the docs,withPivot()
不接受数组,因此:
->withPivot('value_string', 'value_int');