2017-08-01 125 views
0

我在我的application.ie中有一個refferal系統,一個用戶可以反其他。在同一張桌子上定義關係Laravel 5.3

用戶表

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'); 
} 

定義的hasMany關係,我'沒有得到所期望的結果。

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

這回我自己的用戶(引用)的名稱不是裁判

+0

您確定您正確地創建了推薦嗎?也許你在創建時切換ID?到目前爲止,你的代碼對我來說似乎沒問題 – Desh901

+0

沒錯,這是正確 – Shalom

回答

1

你是指的多對多關係走錯了路。

總而言之,它會以下面的方式更容易和高效。

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'); 
} 

只是檢查出適當的語法。

+0

是的,我改變了,它的工作。我沒有得到裁判()關係。你在用戶模型中的意思是什麼? – Shalom

+1

用戶可能會引用許多用戶(推薦人)。 用戶可能會被其他用戶(裁判) –