2016-08-23 3 views
1

Ich benutze PHP Slim3 Fraemwork und eloquent Orm in meiner App. Und ich habe mit beredten Beziehungen Laden verwirrt ..Wie eifrig laden Beziehungen direkt nach der Erstellung in Eloquent

Ich mag würde mein Objekt mit Beziehungen auf Schaffung

Lassen Sie uns sagen, ich habe eine Firma und Benutzermodelle Benutzer hat company Methode und Gesellschaft hat users Methode zum Auffüllen als Gut. Beide Methoden beschrieben richtig

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

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

als irgendwo ich ein neues Unternehmen mit Benutzern

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; 

In diesem Beispiel Unternehmen erstellen möchten und Beziehungen gespeichert werden - es funktioniert Aber in Unternehmen json wird Unternehmen sein nur Und ich möchte es mit den Nutzern sehen, wie gut

Falls ich diese Firma schon kann ich with

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

Aber ich habe bereits alle Daten, die ich brauche - keine Notwendigkeit, es erneut von db zu holen. Gibt es eine Möglichkeit, Unternehmen mit verwandten Benutzern direkt nach der Erstellung zurückzugeben?

Antwort

0

Gefunden eine heikle Weise Initiiert Beziehungen manuell vor Recht zurückgeben von doSomething Methode ..

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

Sieht nicht offensichtliche und knifflige

Bitte Beratung, wenn es keine andere Möglichkeit gibt, meinen Fall zu erreichen?