2017-02-17 4 views
0

내 문제 : 엔티티 사용자와 엔티티 스킬이 있습니다. 사용자는 멀티 스킬을 가질 수 있고 스킬은 멀티 유저를 가질 수 있으므로이 점에 ManyToMany 관계가 있습니다. 결과는 user_id 및 skill_id 열이있는 "Users_Skills"라는 세 번째 중간 테이블입니다.Symfony 3 - 중간 테이블의 행을 삭제합니다 manyToMany

나는 예를 들어 모든 행 id_user = 5

나는 테이블 Users_Skills에 대한 실체가 없기 때문에 나는이 작업을 수행하는 방법을 모른다없이 저장소로,이 테이블에 행을 삭제할. 가장 좋은 방법은 무엇입니까?

답변

0

id가 5 인 사용자 엔티티를 가져와 자신의 기술 목록을 비우고 유지하고 플러시해야합니다. (컨트롤러에서)

예 : 교리 ORM로 작업 할 때

$id = 5; 
$em = $this->getDoctrine()->getManager(); 
$repository = $em->getRepository(User::class); 
$user = $repository->find($id); 
$user->setSkills([]); 
$em->flush(); 
1

일반적으로, 당신은 객체의 관점에서 생각하지 테이블 행의 관점에서해야한다.

$user = $em->getRepository('AppBundle:User')->find(5); 
$skills = $user->getSkills(); 

foreach ($skills as $skill) 
{ 
    $user->removeSkill($skill); 
} 

$em->flush(); 

또 다른 옵션

$user = $em->getRepository('AppBundle:User')->find(5); 
$skills = $user->getSkills(); 
$skills->clear(); 
$em->flush(); 

는 또한 약 Owning Side and Inverse Side

을 읽습니까
관련 문제