Zend\Form
데이터에서 자동 수화로 생성 된 복잡한/중첩 된 객체가 있습니다. 이제 Doctrine 2로 저장하고 싶습니다. 가장 좋은 경우는 persist(...)
이고 하나는 flush(...)
입니다. 하지만 이런 식으로 작동하지 않습니다. 그래서 지금 다음과 같은 문제가 있습니다 :엔티티가 존재하지 않는 경우에만 관계의 한쪽 끝과 다른 쪽 끝을 유지하는 방법은 무엇입니까?
User
과 Order
이 있습니다. 그 관계는 1:n
입니다 (그래서 1
User
은 n
Order
s입니다). User
이 이미 있습니다. User
Joe
시도가 하나 이상의 Order
(예 : 두 번째 순서)를 저장할 때 오류가 발생합니다
새로운 개체가 구성되지 않은 관계 '... \ 주문 번호 사용자'를 통해 발견 된 엔티티에 대한 계단식 지속 작업 : ... \ User @ 000000003ba4559d000000005be8d831. 이 문제를 해결하려면 : 알 수없는 엔티티에서 EntityManager # persist()를 명시 적으로 호출하거나 캐스케이드를 구성하여 매핑에서이 연결을 @ManyToOne (.., cascade = { "persist"})과 같이 유지합니다. 어떤 엔티티가 문제를 일으키는 지 알 수 없다면 '... \ User #__ toString()'을 구현하여 힌트를 얻으십시오. (어쨌든 여기 이해하지 않지만,하지만 단지 그것을 밖으로 시도)
알려줘야, 나는 cascade={"persist"}
추가
class Order
{
...
/**
* @var User
*
* @ORM\ManyToOne(targetEntity="User", cascade={"persist"})
*/
protected $user;
...
}
존재하지 않는 User
주어진다면 지금은, 작동 : Order
및 User
이 생성됩니다.
그러나 User
이 존재하는 경우, 오류가 발생
예외가 발생 PARAMS [ "MyUserName 에다", "멤버", NULL, NULL] :
SQLSTATE [23000] : 무결성 제약 조건 위반 : 키 1062 중복 항목 'MyUserName 에다'username_UNIQUE '를 처리하는 방법
사비 따라서 아직 존재하지 않는다면 User
만 저장됩니다.
당신이 심포니 양식 (또는 유일한 검증 구성 요소)이 객체의 유효성을 검사입니까? [UniqueEntity Constraints] (https : // symfony.com/doc/current/reference/constraints/UniqueEntity.html) – Matteo
의견을 보내 주셔서 감사합니다.하지만 Symfony가 아니라'Zend \ Form'을 사용하고 있습니다. 유효성을 검사하는 양식의 경우 Zend 유효성 검사 기능을 사용합니다. – automatix
Doctrine 오류가 발생할 때마다 "엔티티에 대한 지속 작업을 계단식으로 구성하지 않은 '... \ Order # user'관계를 통해 새 엔티티가 발견되었습니다."내가 뭔가 잘못했거나 보통 작은. 영어로 주문이 지속되었지만 관련 사용자가 유지되지 않았다는 오류가 표시됩니다. 즉, 할당 된 사용자는 데이터베이스에있는 개체로 교리에 알려져 있지 않습니다. 코드를주의 깊게 확인하고 실제로 적절한 사용자를 할당하고 유효 한 사용자인지 확인하십시오. – MEmerson