2016-07-20 2 views
5

모델에 관계를 추가했습니다. 다음 인 구조 :Laravel save 관계와 함께 Eloquent

StructurehasMany 모델 Managers.

$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() 

를하지만 오류를 반환하는 분명한 이유 외래 키 (structure_id)의 $manager 요구 값이 각 ManagerhasManyEmployees

은 그래서 나는이 다음 코드를 사용하여 수행 얻을. $structure->managers()->save()은 도움이되지만 관계와 그 관계은 모두 저장하는 것이 어렵습니다.

따라서 전체 구조 모델을 한 번에 저장하는 방법을 알아야합니다.

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

또는 객체 데이터가 관리자 모델에서 $의 작성 가능한 배열의 선언과 함께 (당신은 배열의 배열을 통과해야 :

+2

내가 많은 시간 동안 무엇을 검색했는지 물었다. –

+0

구조 모델을 먼저 저장해야하며 그 아래에 관리자를 저장하기 위해'$ structure-> managers() -> save()'를 사용하십시오. 아마도 트랜잭션에서 랩핑하는 것이 가장 좋을 수 있습니다. 따라서 하나가 실패하면 삽입이 롤백됩니다. –

+1

@ andrew-nolan 릴레이션을 따로 따로 저장하는 것이 번거롭기 때문에'$ structure-> push() '보다 더 효율적인 것을 기대했습니다. –

답변

0

당신은 (관리자 객체의 배열을 전달하기 위해 당신이 한) saveMany을 사용할 수 있습니다) :

$structure->managers()->createMany(array($managersData)); 
$structure->save();