2016-03-23 20 views
0

私はLaravelで新しく、雄弁に自己の関係に問題があります。 フィールドidreferrerのテーブルusersがあります。ここでreferrerはテーブルユーザーの外部キーです(各ユーザーにはユーザーでもある参照者が1人あります)。テーブルinvoiceはユーザーとの関係があります。ララベルEloquentの自己関係

私はすべての請求書をユーザーと参照元に送付したいと考えています。

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を持っ

答えて

2

はこのお試しください:

public function referrer() 
{ 
    return $this->hasOne('App\User', 'referrer', 'id'); 
} 

public function referral() 
{ 
     return $this->belongsTo('App\User','id','referrer'); 
} 
+0

おかげで、すでに試みたが、うまくいきませんでした:

回答はここにありました。 –

0

最後に私は解決策を見つけました。

関係:関係はそのようにする必要があり

public function referrerBelong() 
    { 
     return $this->belongsTone('User', 'referrer'); 
    } 

    public function referral() 
    { 
     return $this->hasOne('User','referrer'); 
    } 

    public function invoice() 
    { 
     return $this->hasMany('invoice', 'user_id'); 
    } 

私はリファラ列を持っており、それが競合を作成し、参照元のIDの代わりに、リファラオブジェクトを返すので、私は、referrerBelongに名前を変更します。

問合せ:

$this->model->with(['invoice']) 
     ->with(['referrerBelong'=> function($q) 
     { 
      $q->with(['invoice']); 
      }]); 

}]); 

とコントローラで使用すると、参照元のIDを取得するために$user-referrerBelong$user-referrerを使用して参照元オブジェクトを取得することができます。答えをhttp://laravel.io/forum/01-22-2015-eloquent-belongsto-not-returning-relationships

関連する問題