새로운 항목을 데이터베이스에 추가하고 싶지만 이전 항목을 삭제하지 않을 때마다 양식을 제출하고 싶습니다.Symfony 2.8 : CollectionType - 오래된 항목을 지우지 마십시오.
일련 번호 컬렉션이 포함 된 인벤토리 엔티티가 있다고 가정 해 보겠습니다.
재고 양식 빌더
$builder
->add('quantity', IntegerType::class)
->add('inventorySerialNumbers', CollectionType::class, array(
'entry_type' => InventorySerialNumberType::class,
'allow_add' => true,
'allow_delete' => false,
'by_reference' => false,
))
;
재고 일련 번호 속성 :
/**
* @var ArrayCollection
*
* @ORM\OneToMany(targetEntity="InventorySerialNumber", mappedBy="inventory", cascade={"persist"})
*/
protected $inventorySerialNumbers;
그래서, 나는 새로운 목록을 만들려면 - 나는 quantity
2 inventorySerialNumbers
모든 데이터가 올바르게 추가되고 보내 . 그러나 항목을 하나 더 추가하려면 수량 1과 항목 1 개를 보내야합니다. 결과적으로 데이터베이스에 최신 항목이 하나만 저장됩니다.
cascade={"persist"}
및
'allow_delete' => false
안녕 : 불행하게도, 난 여기 당신이 봐야 두 recources을하는 심포니의 웹 사이트에 좋은 예를 찾을 수 있지만 없습니다! 지체 된 것에 대해 유감스럽게 생각합니다. 몇 시간의 연구 끝에 항목이 삭제되지 않고 새로운 항목으로 바뀌 었습니다. 저에게 적합한 해결책은 제출 될 때마다 항목의 완전한 콜렉션을 보내는 것입니다. –
문제를 해결해 주셔서 감사합니다. 따라서 사용자가 새 항목을 추가하면 기존 항목과 병합됩니까? –
불행히도 그렇습니다. 이전 항목을 새 항목으로 다시 작성하지 못하도록 양식을 제출할 때마다 항목을 계속 보관해야합니다./ –