对于推荐计划,我有两个表。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
方法)返回这些关系?
您可以取消推荐人数据透视表。在belongsTo
- hasMany
关系中不需要这样做。这与任何类似关系的工作原理相同,您只是引用相同的表。因此,您的users表需要一列来存储referrer_id
,那么您的模型可以像这样:
class User extends Model
{
public function referrerUser()
{
return $this->belongsTo('AppUser', 'id', 'referrer_id');
}
public function referredUsers()
{
return $this->hasMany('AppUser', 'referrer_id', 'id');
}
}
你可能得把键调换一下。我总是把它们搞混