0

(몇 년 전에 symfony 1.x를 사용함) Im과 Doctrine2와의 엔티티 관계를 처리하는 방법을 이해하려고 시도한 임씨. (덧붙여서, Symfony2의 책이 단순히 Doctrine2 문서를 참조하는 대신에 더 많은 관계 예제를 가지고 있다면 좋을 것입니다 :-)Doctrine2 엔티티 관계

그래서 저는 여러 제품과 관련된 간단한 제품 엔티티를 가지고 있습니다. 여러 범주에 있어야 함). 표면적으로 이것은 일대 다 종류의 관계 오른쪽처럼 보이지만, 그런 관계는 데이터베이스의 조인 테이블을 통해 이루어질 것이라고 생각합니다. 그래서 대신 이런 식으로 일하는 임 :

실제로 스키마 업데이트를 수행하면 예상대로 데이터베이스에 조인 테이블이 만들어집니다. 그러나 Im이 이것을 many-to-many로 바꾸는 것을 잘못 생각한 것일까 요? Im은 모범 사례에 대해 물어 보았습니다. 어떻게하면 좋을까요? 누구나 조언을하거나 예제를 제공 할 수 있습니까?

답변

2

"단일 제품이 여러 카테고리에 속할 수 있습니다."라는 문장이 사실이지만 "여러 제품이 여러 카테고리에 포함될 수 있습니다." 당신이 좋은 문장, 사용하지 않을 때문입니다 :

  • "카테고리가 많은 제품을 가질 수 있습니다"를

이의 "제품 많은 범주를 가질 수 있습니다" 당신은 다 - 대 - 다 관계가 있음을 의미합니다.

  • "많은 제품을 가지고 할 수있는 범주"

그런 다음 당신이 하나를 가질 것 "제품은 카테고리를 가질 수 있습니다"인 경우 대다수와 다 대일 관계. 당신이 많은 관계로 많은하려면

+0

감사가 필요합니다 - 의미가있다. – Eno

0

당신은 중간 테이블을 명확히하기위한

class Product 
{ 
    /** 
    * @ManyToMany(targetEntity="Categories") 
    * @JoinTable(name="Product_Category", 
    *  joinColumns={@JoinColumn(name="product_id", referencedColumnName="id")}, 
    *  inverseJoinColumns={@JoinColumn(name="Category_id", referencedColumnName="id")} 
    *  ) 
    */ 
    private $categories; 
} 
+1

Doctrine2가 자동으로 선택하는 (현명한) 기본 설정을 좋아하지 않는 한 조인 테이블이나 열을 지정하지 않아도됩니다. (http://www.doctrine-project.org/docs/orm/2.0/en/reference/association-mapping.html#mapping-defaults를 참조하십시오.) – Eno

+0

그래,하지만 어떻게 생각하는지 분명히 생각한다. 관계는 make입니다. :) – SERPRO

+1

사랑 주석이 있지만 코드를 읽을 때주의가 산만 해집니다. – Eno