2014-05-01 4 views
0

'id'및 'dependency'열이있는 작업 엔터티가 있습니다. 내 현재의 설정은 'id'와의 OneToOne 자체 참조 관계에 '의존성'이 있습니다. 아이디어는 각 작업에 하나의 종속성을 할당 할 수 있지만 종속성은 하나의 작업에만 고유하지 않다는 것입니다.Doctrine 자체 참조, 고유하지 않은 관계 설정 방법

예를 들어 작업 4와 작업 5는 둘 다 작업 2의 종속성을 가질 수 있지만 4와 5는 서로에 대해 아무 것도 알 필요가 없습니다.

두 개의 다른 후속 작업에 대한 종속성과 동일한 작업을 할당하려고 시도 할 때까지 모든 것이 올바르게 작동했습니다. OneToOne 관계는 고유 한 것으로 정의되며 변경 될 수있는 것이 아닙니다. 이것은 제가 원하는 것을 구현하는 최선의 방법을 찾아 내려고 노력하게 만듭니다. 앞의 태스크는 의존하는 후속 태스크에 대해 알 필요가 없으므로 단방향 관계가 필요합니다.

Task는 하나의 종속성 만 가질 수 있기 때문에 ManyToOne은 의미가없는 것처럼 보입니다. OneToMany는 'Id'열에 종속 작업에 대한 정보를 제공합니다.이 작업은 필요하지 않으며 엔티티를 업데이트 할 때 예측할 수없는 파급 효과가 있는지 확실하지 않습니다.

어쩌면 나는 (Doctrine에 상당히 새로운) 꽤 올바른 것을 이해하지 못하기 때문에, 누군가 올바른 방향으로 나를 가리킬 수 있다면, 나는 그것을 고맙게 생각할 것이다.

+0

자체 참조 (OneToOne, OneToMany 및 ManyToMany)에 대한 doctrine 설명서를 참조하십시오. [http://docs.doctrine-project.org/en/2.0.x/reference/association-mapping.html#one-to -Many-self-referencing] – Javad

+0

@Javad, 나는 그 문서들에 대해 조사해 왔고 유일한 제약을 어떻게 바꿀지를 알 수 없다. 내 게시물에 명시된 바와 같이 원래의 자체 참조 OneToOne은 동일한 작업에 대한 여러 참조를 필요로 할 때까지 정확하게 작업했습니다. – TheGremlyn

+0

이전에 작성한 색인을 삭제하고 새로운 변경 사항에 대한 스키마 기본을 업데이트 할 수 있습니까? 이것이 도움이 될지 모르겠지만, @ORM \ Table (name = "table_name", uniqueConstraints = {@ORM \ UniqueConstraint (name = "set_any_name", columns = "Symfony \ Bridge \ Doctrine \ Validator \ Constraints \ UniqueEntity;를 사용해야하는"put ","list ","of ","unique ","columns "}}))' – Javad

답변

0

이 경로를 사용하는 것이 매우 직관적 인 것으로 보였지만 ManyToMany 단방향 자기 참조 관계를 사용하여 목표를 달성했습니다. 'id'열을 전혀 사용하지 않으려 고했기 때문에 (기본, 고유 키, 자동 증가) 양방향 관계를 유지할 수 없었습니다. 이것은 ManyToOne을 사용하여 원하는 방식으로 가능하지 않은 것처럼 보였습니다 (아마도 잘못하고 있었지만 얻을 수는 없었습니다). ManyToMany를 사용하여 가능했습니다.

미래에는 실제로 여러 종속성을 사용하기를 원할 것입니다. 따라서이 점에 대해서는 약간의 유연성이 있습니다.