Я новичок в Laravel и у меня проблемы с самоотношением в красноречии. У меня есть таблица users
с полями id
и referrer
, где referrer
- внешний ключ для пользователей таблицы (у каждого пользователя есть один реферер, который также является пользователями). А таблица invoice
имеет отношение к пользователям.
Я хочу получать все счета для пользователя и для реферера.
В модели я построил отношения:
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');
}
И запрос:
$this->model->with(['invoice'])
->with(['referrer'=> function($q)
{
$q->with(['invoice']);
}]);
}]);
Но этот запрос возвращает мне пользователей и их счета, но не возвращает реферер, только пустой ключ массива referrer =>
Обновлено
Меняю отношения:
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');
}
И теперь, выгружая результат, я вижу отношение реферера, но когда я пытаюсь получить $user->referrer
, я получил просто идентификатор реферера вместо объекта реферера