Eloquent中的推荐程序:自我引用表,其中包含一对多的引用

时间:2015-09-25 14:41:29

标签: laravel laravel-5 eloquent

对于推荐计划,我有两张桌子。 users(包含id和其他一些列)和referralsreferrer_idreferred_id

User可能有多个推介用户,User可能只有一个推荐人User。所以User模型应该是这样的:

class User extends Model 
{

    public function referrerUser()
    {
        // There may be only one referrer user for this user
    }

    public function referredUsers()
    {
        // There may be many referred users for this user
    }
}

我阅读了一些有关此内容的消息,但我对正确的方法感到有些困惑。那么,我如何使用belongsTo(针对referrerUser方法)和belongsToMany(针对referredUsers方法)返回这些关系?

1 个答案:

答案 0 :(得分:1)

您可以废弃引荐数据透视表。 belongsTo - hasMany关系中没有必要这样做。这与任何类似关系的工作方式相同,您只是引用同一个表。因此,您的用户表需要一个列来存储referrer_id,那么您的模型可能如下所示:

class User extends Model 
{

    public function referrerUser()
    {
        return $this->belongsTo('App\User', 'id', 'referrer_id');
    }

    public function referredUsers()
    {
        return $this->hasMany('App\User', 'referrer_id', 'id');
    }
}

您可能需要切换按键。我总是让他们感到困惑:)