2016-07-18 5 views
1

私はLaravelを使い始めて、ほとんどの基本は機能しますが、モデルやコレクションに子を追加する方法はわかりません。だから基本的に私は3つのモデル(ユーザー、代理店、アカウント)を言うことができます。アカウントはディストリビューターに属し、ディストリビューターはユーザーに属します。どちらもディストリビューターが多くのアカウントを持ち、ユーザーが多数のディストリビューターを持つことができるように、どちらも「One to Many」の関係です。Laravelモデルに子を追加する

これ、そのユーザーのために代理店を取得し、私のコントローラ

$distributors = User::find($id)->distributors; 

私のユーザモデル

public function distributors() 
    { 
     return $this->hasMany('App\Distributor'); 
    } 

に私の店のモデル私は大好きだ何

public function accounts() 
    { 
     return $this->hasMany('App\Account'); 
    } 

を持つことですディストリビュータモデルの子として追加されたアカウント。現在私がdd($distributors);の場合、そのユーザーのすべてのディストリビューターを取得しますが、各ディストリビューターのアカウントはありません。

ディストリビュータに追加できるようにいくつかの機能を追加できますか?この呼び出し使用して同じように:一般的に

$distributors = User::find($id)->distributors->with('accounts'); 

答えて

0

を、あなたはこのように、たとえばためDistributorAccountを追加することができます。

あなたのケースでは
Distributor::find(1)->accounts()->save($account); 

は、あなたがにAccountを追加することができますDistributorこのように:

$distributors = User::with('distributors')->find($id)->distributors; 
//A User can have many Distributors so you need to select one distributor, 
//the first one in this example with index 0 ! 
$distributors[0]->accounts()->save($account); 

私はこれがあなたを助けてくれることを願っています。

+0

あなたはこれを説明できますか?どのようにこれを取得し、クエリに含まれているディストリビューターにアカウントを保存しますか?あなたはちょうど1のIDを渡しているようですね? – Packy

+0

更新された回答を確認してください。 –

+0

あなたが言っていることが分かりました。私はちょうど実際のモデルにこれを追加する方法があると思ったのですが、配布者のリストを取得するたびに、一度に1つではなくすべてのアカウントを取得することもできます。主な目標は、すべてのユーザーアカウントのリストを返すことです。これらは、ディストリビューターを通じてそれらに関連付けられています。 – Packy

1

私はそれを得ました。私がしなければならなかったのは、コントローラにないユーザモデルに "with"を追加することでした:

public function distributors() 
    { 

     return $this->hasMany('App\Distributor')->with('Accounts'); 
    } 
関連する問題