在同一桌Laravel 5.3上定义关系

时间:2017-08-01 09:50:49

标签: laravel eloquent laravel-5.3

我的应用程序中有一个refferal系统。一个用户可以使用另一个用户。

用户表

id name 
1   A
2   B
3   C

推介表

id referrer_id referee_id
1      1           2
2      2           3

我想展示用户推荐的内容。

用户模型

public function referrals()
{
    return $this->hasMany('App\Models\Referral','referee_id','id');
}

推介模式

public function referrer_user()
{
    return $this->belongsTo('Modules\User\Models\User','referrer_id','id');
}

public function referee_user()
{
    return $this->belongsTo('Modules\User\Models\User','referee_id','id');
}

在推荐模型中定义User模型中的hasMany关系和belongsTo关系,我没有得到所需的结果。

@foreach($user->referrals as $key => $referral)
    {{dd($referral->referee_user->name)}}
@endforeach

这返回给我自己的用户名(推荐人)而不是裁判

1 个答案:

答案 0 :(得分:1)

您指的是ManyToMany关系的错误方式。

无论如何,通过以下方式,它将变得更加容易和有效。

id  name  referred_by
 1   abc    null
 2   def     1
 3   gfd     2

用户模型

/**
 * Who did he bring onboard?
*/
public function referrals(){
  return $this->hasMany('....User', 'referred_by');
}

//Who brought him onboard..
public function referree(){
  return $this->belongsTo('...User', 'referred_by');
}

请查看相应的语法。