Patrick Obafemi
Patrick Obafemi

Reputation: 1066

Creating self referencing relationships

I want to be able to make relationships between a captain and his referrals. They both belong to the same table. I have this in my model

public function captain() {
    $this->belongsTo('User', 'referral_id') ;
} 

 public function captain() {
    $this->hasMany('User', 'referral_id') ;
 } 

My users table has the following columns id name referral_id referred_by

1 xyz         1223          null
2 Abc         4525          1223

How do I create the relationship better? And I want to know if I can and how I can use this to get the referral of a referral of the captain

Upvotes: 1

Views: 105

Answers (1)

Jimmy
Jimmy

Reputation: 252

I'd create a second table for your referrals - then you create a relationship between your captain ID in table 1 over in table 2 where all the referers can be stored. If you setup the relationship, you then simply call something like

$captains = App\Captain::all();

foreach ($captains as $captain) {
    echo $captain->referrals->name;
}

ref using simple eager loading... or ->with using other methods (or join etc)

Upvotes: 1

Related Questions