2013-10-15 2 views
0

안녕하십니까.ManyToOne 소유 측면 발행

나는 잠들 수없는 질문이 있습니다. 예를 들어 Product라는 엔티티 (클래스)가있는 경우. 그리고 나는이 제품과 많은 이미지를 연결해야한다. 데이터베이스 (내 경우에는 MySQL)에서 이렇게 보일 것입니다 - 제품에 테이블을 만들고 이미지 용 테이블을 만들 것입니다. 그리고 이미지 테이블에는 제품 ID를 저장하는 필드가 있습니다.

이 시점에서 이해합니다. 내가 이해하지 못하는 것은 - ORM (Doctrine2)에서 내 제품과 이미지로 작업 할 때 Image 클래스에 대해 inversedBy = "images"주석을 만들고 Product 클래스에 대해 mappedBy = "products"를 작성해야합니다. 내 응용 프로그램에서이 Product 객체는이 연결의 소유 측면에 있습니다.

어떻게해야합니까? ManyToMany 관계를 만들어야합니까? 아니면 다른 방법이 있습니까?

감사합니다.

P. 이미지는 Product 엔터티의 ArrayCollection 인스턴스입니다.

답변

0

둘 이상의 제품에서 하나의 이미지를 사용할 수 있습니까? 내가 옳다고 가정하면, 그렇게 할 수 없습니다. 그러므로 나는 OneToMany 관계로 갈 것입니다.

+0

아니요 -이 경우입니다. 그것이 그런 경우라면, 나는 Product 엔터티를 그 관계의 소유 측으로 선택할 것입니다. –

1

가 나는

https://doctrine-orm.readthedocs.org/en/latest/reference/association-mapping.html#one-to-many-bidirectional

지옥을 설정하기위한 문서에 설명 된 것 이상의 질문을하지 않는, 심지어 예에서 법인으로 "제품"을 사용 - 단지 교체를 "기능 ""이미지 "를 설정하면됩니다.

양방향 관계가 필요하지 않습니까?

+0

그 방법을 사용할 때 - 새 제품을 만들고 새 이미지를 해당 제품에 추가 할 때 ProductController의 작성 메소드에서이를 관찰해야하지만이를 처리 할 다른 방법이 있는지 알고 싶습니다. –

0

확인. 나는 이것을 처리했다. 내가 한 것은 cascade = { "persist"}를 관계의 역변과 Product 클래스의 addImage 메소드에 추가 한 것입니다. public function addImage ($ image) { $ this-> images- > add ($ image); $ image-> setProduct ($ this); return $ this; }