2011-10-10 1 views
7

블로그 애플리케이션이 있다고 가정 해 봅시다.
작성자는 웹에있는 기존 이미지의 URL에 대한 링크를 제공하거나 이미지를 새로 업로드하여 게시물에 여러 이미지를 추가 할 수 있습니다.doctrine 2에서 어떻게 복잡한 엔터티 연결 쿼리를 수행 할 수 있습니까? (가상 개체)

이미지 (업로드 또는 URL)를 이미지를 사용하는 모든 게시물로 되돌리고 특정 게시물에서 해당 게시물의 모든 이미지로 되돌릴 수 있기를 원합니다. 예를 들어 삭제할 수 있습니다. 불법적 인 이미지 및/또는 작성자가 게시물을 수정할 때까지 해당 이미지를 사용하는 게시물을 일시 중지하십시오.)

그러나 업로드 된 이미지와 URL 이미지가 다른 엔티티를 사용합니다. 업로드 된 이미지에는 URL 이미지보다 이미지에 관한 데이터가 더 많습니다.

편집 된 게시물을 저장할 때마다 특정 이미지 (내가 실행해야하는 게시물의 모든 이미지 중에서)를 확인하고 작성 또는 업데이트해야하는 경우와 같이 코드가 복잡해집니다. 그것의 기록, 그리고 후 엔티티의 관계 필드에 할당. 내가 UploadedImageUrlImage 기관이 가정

그럼, 나는 그것을 업로드 또는 URL을 경우, 그것은 얻을 각 이미지마다 확인하는 post 기업의 setImages 방법을 가지고 생각하고 통화 중 setUploadedImages 또는 setUrlImages.

그러나 같은 방식으로 이미지를로드하려면 가상의 images 가상 저장소가 필요합니다.

그것은 조금 복잡한 소리, 나는 궁금 :

  1. 이 어떻게 (그 저장소와 모두와 함께) 가상 교리 엔티티를 가질 수있다?
  2. 더 좋은 디자인이 있습니까?
    http://doctrine-orm.readthedocs.org/en/latest/reference/inheritance-mapping.html

    그것은 클래스 테이블 상속 대 단일 테이블 상속을 설명합니다 :

+3

[상속 매핑] (http://www.doctrine-project.org/docs/orm/2.1/en/reference/inheritance-mapping.html)을 사용해 보셨습니까? – Orbling

+0

@Orbling 어떤 방식으로? 그리고 각 유형별로 무엇을해야 할지를 결정하는 "문제"를 어떻게 해결할 것인가? – Doron

+0

음, 상속 매핑을 사용하면 두 유형을 모두 나타내는 수퍼 클래스를 가질 수 있으며 함께 처리 할 수 ​​있습니다. 하위 유형에 따라 동일한 메소드 및 다른 작업을 수행 할 수 있습니다. – Orbling

답변

2

여기 당신이 뭘 하려는지에 대한 설명서입니다. 사례는 후자의 사례에 적합하지만 단일 테이블 상속으로 마이그레이션하는 것도 고려하십시오.

이러한 이미지의 (코드) 사용자가 원본과 관계없이 동일하게 취급하는 경우 쿼리 복잡성과 데이터베이스 사용이 추가되어 정규화 할 가치가 없습니다.

관련 문제