2016-08-23 91 views
1

我在我的应用中使用了php slim3 fraemwork和雄辩的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(); 

但我alreay有我需要的所有数据 - 无需再次从数据库中获取它。 创建后有没有办法让相关用户返回公司?

回答

0

发现了一个取巧的办法 发起的关系从doSomething方法手动权利之前返回它..

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

看起来不明显和棘手

如果要达到我的情况下,任何其他方式请指教?