2016-07-18 3 views
1

Я начинаю с Laravel и получаю, как работает большинство основ, но не уверен, как добавить детей в модель или коллекцию. Так что в основном я могу сказать 3 модели (Пользователи, Дистрибьюторы и Учетные записи). Учетные записи принадлежат Дистрибьюторам, а Дистрибьюторы принадлежат Пользователям. Оба являются отношениями «Один-ко-многим», поэтому у Дистрибьютора может быть много учетных записей, а Пользователь может иметь много Дистрибьюторов.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

В общем, можно добавить Account к Distributor, , например, как это:

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? – Packy

+0

Проверьте обновленный ответ. –

+0

Хорошо, я понимаю, что вы говорите. Я просто подумал, что есть способ добавить это в фактическую модель каждый раз, когда получаю список дистрибьюторов, я могу также получить все связанные с ними учетные записи не только по одному. Основная цель - вернуть список всех учетных записей пользователей. Они связаны с ними через дистрибьютора. – Packy

1

У меня есть. Я должен был добавить «с» к модели пользователя не в контроллер, поэтому:

public function distributors() 
    { 

     return $this->hasMany('App\Distributor')->with('Accounts'); 
    }