私はLaravelが初めてで、雄弁な自己関係に問題があります。users
フィールドid
とを持つテーブルがありますreferrer
。ここで、referrer
はテーブル ユーザーへの外部キーです (各ユーザーには、ユーザーでもあるリファラーが 1 つあります)。また、テーブル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
、リファラーオブジェクトではなくリファラーIDが取得されました