2012-10-18 3 views
3

다음과 같이 매핑 된 엔터티 "사용자"와 "역할"간의 다 대다 관계가있는 스키마가 있습니다.EntityManager와의 다 대다 관계의 개체 부분을 삭제하면 오류가 반환됩니다.

역할 엔티티

/** 
* @ORM\ManyToMany(targetEntity="User", mappedBy="roles", cascade={"persist", "remove"}) 
*/ 
protected $users; 

및 사용자 엔티티

/** 
* @ORM\ManyToMany(targetEntity="Role", inversedBy="users", cascade={"persist", "remove"}) 
* @ORM\JoinTable(name="users_roles") 
* 
* @var ArrayCollection $userRoles 
*/ 
protected $userRoles; 

내가 다음 코드를 사용하여 역할 개체를 삭제하려고

$role = $em->getRepository('ACMEDefaultBundle:Role')->find($id); 
$em->remove($role); 
$em->flush(); 

나는 교리 예외를 얻고있다

ErrorException : 알 수없는 색인 : /media/sf_sandbox/aalcodev/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php 964 (캐치되지 않는 예외)/media/sf_sandbox/aalcodev/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php 라인 964

도와주세요. 고맙습니다.

+0

제목에 '문제'라고 쓰지 마십시오. [좋은 제목 쓰기] (http://meta.stackexchange.com/questions/10647/writing-good-titles/10648#10648)를 참조하십시오. – hakre

+0

이해하기 어려운 오류 메시지는 어느 부분입니까? 역할이라는 색인은 어디에 있습니까? – hakre

+0

@hakre 죄송합니다. 처음으로 여기에 게시, 링크 주셔서 감사합니다. 나는 색인 "역할"이 없다. 'schema : update'를 실행하면 user, roles 및 users_roles라는 세 개의 테이블이 생성되고 EntityManager를 사용하여 '역할'을 추가하고 업데이트 할 수 있습니다. 삭제를 시도하면 오류가 발생합니다. Doctrine의 DBAL을 사용하여 삭제하십시오. 내가 무엇을 놓치고 있습니까? –

답변

3

mappedBy="roles"mappedBy="userRoles"으로 변경해야합니다. "지도 작성자"가 다른 쪽의 속성 이름을 가리켜 야합니다 ...

+0

그랬습니다. 고마워요. –

관련 문제