2016-07-20 4 views
5

モデルとの関係を追加しました。Laravel saveリレーションシップと同様に

StructureモデルhasManyManagers:構造は次のようであること。各ManagerhasManyEmployees

だから私はこの次のコードを使用して行います:

$structure->name = "Something"; 
$manager1 = new Manager; 
$manager2 = new Manager; 

$manager1->name = "Man One"; 
$manager2->name = "Man Two"; 

$emp1 = new Employee; 
$emp2 = new Employee; 
$emp3 = new Employee; 

$emp1->name.... 
... 
.... 

$manager1->add($emp1); 
$manager1->add($emp2); 
$manager2->add($emp3); 

$structure->add($manager1); 
$structure->add($manager2); 

.... //Some calculations & necessary processing to fill up other properties of $structure. 

///Now I have to save $structure.. 
$structure->push() 

をしかし、それは$managerは明白な理由のために、外部キー(structure_id)の値が必要であること、エラーが返されます。 $structure->managers()->save()は役に立ちますが、の関係とその関係をすべて保存するのは面倒です。

そこで私は、一度に全体の構造モデルを保存する方法を知っておく必要があります。あなたがマネージャモデルで$の充填可能な配列で宣言されたオブジェクトのデータを配列の配列を渡す必要が

$structure->managers()->saveMany(array($managers)); 

または(:

+2

多くの時間を探していたのですか? –

+0

まず、構造体モデルを保存し、その下に '$ structure-> managers() - > save()'を使ってマネージャを保存する必要があります。おそらくトランザクション内でそれをラップするのが最善の方法なので、失敗した場合は挿入がロールバックされます。 –

+1

@アンドリュー・ノーランが、私は '$構造 - >プッシュ()よりも効率的な何かを期待'別途の関係を保存するためには、ActiveRecordのです面倒 –

答えて

0

あなたはsaveManyを(あなたがManagerオブジェクトの配列を渡す必要が)を使用することができます):

$structure->managers()->createMany(array($managersData)); 
$structure->save(); 
関連する問題