2016-08-23 10 views
1

Я использую php slim3 fraemwork и eloquent orm в своем приложении. И я озадачен с погрузкой красноречивые отношений ..Как поддерживать отношения нагрузки сразу после создания в Eloquent

Я хотел бы, чтобы заполнить свой объект с отношениями по созданию

Скажем, у меня есть модели компании и пользователей Пользователь имеет company метод и Компания имеет users метод как Что ж. Оба метода описаны правильно

//User.php 
company() 
{ 
    return $this->belongsTo('Company'); 
} 

//Company.php 
users() 
{ 
    return $this->hasMany('User'); 
} 

чем-то я хочу, чтобы создать новую компанию с пользователями

function doSomething(array $data) 
{ 
    $company= new Company(); 
    //fill it 
    //... 
    $users = []; 
    foreach ($data['user_emails'] as $email) 
    { 
     $users[] = new User(['email' => $email]); 
    } 
    $company->users()->saveMany($users); 
    $company->save(); 

    return $company(); 
} 


$company = doSomething(['emails'] => ['[email protected]', '[email protected]']); 

//rely on build in to Model toString that uses json serialization 
echo $company; 

В этом примере компании и отношения будут сохранены - это работает Но в компании JSON будет компания только И я хотел бы видеть его с пользователями, а также

в случае у меня есть эта компания уже я могу использовать with

echo Company::query()->with('user')->get(); 

Но у меня есть все данные, в которых я нуждаюсь - нет необходимости повторно извлекать их из db. Есть ли способ вернуть компанию со связанными пользователями сразу после создания?

ответ

0

нашел хитрый способ инициированные отношения вручную прямо перед возвращением его из doSomething метода ..

$company->setRelation('users', new Collection($users)); 

кажется неочевидным и хитрым

Пожалуйста, советы, если есть какой-либо другой способ добраться до моего дела?

 Смежные вопросы

  • Нет связанных вопросов^_^