Laravel,Eloquent表通过数据透视表与自己相关

时间:2014-02-19 12:54:46

标签: php laravel eloquent

我有用户类(表):

  • ID
  • 用户名

关系表:

  • USER_ID
  • subscribed_by

创意:每个用户都可以订阅其他用户。 最后一个变种是(不起作用):

/* class User extends Eloquent ... */ 
public function followers() {
    return $this->belongsToMany('User', 'rel_table')->withPivot('user_id');
}

public function following() {
    return $this->belongsToMany('User', 'rel_table')->withPivot('subscribed_by');
}

需要帮助:如何设置?

1 个答案:

答案 0 :(得分:1)

首先,建议您应重命名数据透视表follower_idfollowed_id中的字段(或类似内容)。那更清楚了。

然后你必须定义这样的关系:

public function followers() {
    return $this->belongsToMany('User', 'rel_table', 'followed_id', 'follower_id');
}

public function following() {
    return $this->belongsToMany('User', 'rel_table', 'follower_id', 'followed_id');
}

withPivot方法用于定义关系上的其他属性,而不是两个外键。