与同一表Laravel 5具有相同外键的关系

时间:2017-10-05 18:07:09

标签: php laravel eloquent relationship

我正在构建推荐系统,表 User 由另一个推介,例如:

用户表:

id

name

推介表:

id

referred_by (user_id)

refers_to (user_id)

同一个表的相同外键。 用户表与推荐之间的关系是什么?

2 个答案:

答案 0 :(得分:0)

我假设您的用户模型为App\User,推荐模型为App\Referral

如果您希望通过您的用户获得他们推荐的人,您可以App\User

function  referredBy() {
    return $this->hasMany('App\Referral', 'referred_by');
}

如果您想通过您的用户获取被推介者:

function referredTo() {
    return $this->hasMany('App\Referral', 'refers_to');
}   

只要您拥有$user个对象,就可以按$user->referredTo()$user->referredBy()获取所有其他引用用户的列表 Eloquent模型允许您使用不同的键名创建许多不同的样式关系。

参考:https://laravel.com/docs/5.5/eloquent-relationships#introduction

答案 1 :(得分:0)

这个问题有点含糊不清,但如果你想在同一张桌子上建立关系,可以这样做 -

在制作表格时,可以使用referrals_table'在架构中 -

$table->foreign('refers_to')->references('referred_by')->on('referrals_table')

在模型中,关系将是(假设此模型文件的名称为ReferralTable) -

public function name_your_function() {
    returns $this->belongsTo(ReferralTable::class)
}

您现在可以调用此功能来使用它。