我正在构建推荐系统,表 User 由另一个推介,例如:
用户表:
id
name
推介表:
id
referred_by (user_id)
refers_to (user_id)
同一个表的相同外键。 用户表与推荐之间的关系是什么?
答案 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)
}
您现在可以调用此功能来使用它。