I'm new in Laravel and have problem with self relations in eloquent.
I have table users with fields id and referrer, where referrer is foreign key to table users (each user have one referrer which is also users). And table invoice has relation to users.
I want to get all invoices for user and for referrer.
In model I made relations:
public function referrer()
{
return $this->hasOne('User', 'referrer');
}
public function referral()
{
return $this->belongsTo('User','id');
}
public function invoice()
{
return $this->hasMany('invoice', 'user_id');
}
And query:
$this->model->with(['invoice'])
->with(['referrer'=> function($q)
{
$q->with(['invoice']);
}]);
}]);
But this query returns me users and their invoices but do not return referrer just empty array key referrer =>
Updated
I change relations :
public function referrer()
{
return $this->hasOne('User', 'referrer');
}
public function referral()
{
return $this->belongsTo('User','referrer');
}
public function invoice()
{
return $this->hasMany('invoice', 'user_id');
}
And now dumping result I see referrer relation but when I trying to get $user->referrer I got just referrer id instead of referrer object