对于推荐计划,我有两张桌子。 users
(包含id
和其他一些列)和referrals
(referrer_id
和referred_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
方法)返回这些关系?
答案 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');
}
}
您可能需要切换按键。我总是让他们感到困惑:)