2016-06-30 2 views
1

오류 메시지 :새로운 엔티티는 관계를 통해 밝혀졌다

새로운 엔티티 관계 통해 엔티티에 대한 동작을 계속 캐스케이드 구성되지 'AppBundle \ 엔티티 \ 타리 # 1 페소'밝혀졌다 : AppBundle \ Entity \ TarifaPeso @ 0000000072d3bd4300000000232470d3. 을 해결하려면이 알 수없는 엔터티에서 EntityManager # persist()를 명시 적으로 호출하거나 캐스케이드를 구성하여 매핑 (예 : @ManyToOne (.., cascade = { "persist"})에서이 연결을 유지하십시오. 어떤 엔터티가 문제를 일으키는 지 알아 내면 'AppBundle \ Entity \ TarifaPeso #__ toString()'단서를 찾을 수 없습니다.

Tarifa.php

/** 
* @ORM\OneToMany(targetEntity="TarifaPeso", mappedBy="tarifa") 
*/ 
private $pesos; 

TarifaPeso.php

/** 
* @ORM\ManyToOne(targetEntity="Tarifa", inversedBy="pesos", cascade={"persist"}) 
* @ORM\JoinColumn(name="tarifa_id", referencedColumnName="id") 
*/ 
private $tarifa; 

TarifaType.php

 ->add('pesos', CollectionType::class, array(
      'entry_type' => TarifaPesoType::class, 
      'allow_add' => true, 
      'allow_delete' => true, 
      'by_reference' => false 
     )) 

제어기 ...

,

무엇이 누락 되었습니까? 정말 지쳐서 ... 도와 줘?

+0

양식을 직접 처리하는 중입니까? –

+0

죄송합니다, 컨트롤러 코드를 추가하는 것을 잊어 버렸습니다. 업데이트했습니다. 나는 'merge'로 'em-> persist'를 변경했으나 작동하지만 embed 클래스 (TarifaPeso)를 저장하지 않습니다 ... – jmunozco

답변

2

TarifaPeso::tarifa에서 Tarifa::pesos 속성으로 cascade={"persist"} 주석을 이동해야합니다. 또는 명시 적 양식에서 얻을 모든 pesos을 지속 할 수

$entityManager->persist($tarifa); 
foreach ($tarifa->getPesos() as $peso) { 
    $entityManager->persist($peso); 
} 
$entityManager->flush(); 
+1

위대한! TarifaPeso 테이블의 데이터는 저장하지만 TarifaPeso 테이블의 tarifa_id는 저장하지 않습니다 (저장되지 않은 외래 키, 다른 두 필드 만). 다른 것을 추가해야합니까? 당신의 도움을위한 tnaks! – jmunozco

0

좋아, 그것을 해결, 지금은 TarifaPeso 테이블의 타리 파의 ID를 저장합니다. 오류는 AddPeso 메서드에서 해당 줄을 제거한 것입니다.

public function addPeso(\AppBundle\Entity\TarifaPeso $pesos) 
{ 
    $this->pesos[] = $pesos; 
    $pesos->setTarifa($this); 
    return $this; 
} 
+0

"라인"은 어느 것입니까? –