Załóżmy, że mam aplikację blogową.
Autor może dodać wiele zdjęć do wpisu, podając link do adresu URL istniejącego obrazu w Internecie lub przesłać nowy obraz.Jak mogę wykonywać złożone zapytania o powiązania encji w doktrynie 2? (jednostka wirtualna)
Chcę móc przywrócić ścieżkę z obrazu (przesłanego lub adresu URL) do wszystkich postów, które używa tego obrazu, oraz z konkretnego wpisu do wszystkich obrazów w tym poście (na przykład - tak, żebym mógł usunąć obrazy, które są nielegalne i/lub zawieszają wpis, który ich używa, dopóki autor nie usunie postu).
Używam jednak różnych elementów do przesłanego obrazu w porównaniu z obrazem URL - przesłany obraz zawiera więcej danych dotyczących obrazu niż obrazu URL.
Skutkuje to bardziej złożonym kodem, ponieważ przy każdym zapisie edytowanego wpisu muszę sprawdzić, który rodzaj jest obrazem (ze wszystkich obrazów w poście, które muszę przejechać), a następnie utworzyć lub zaktualizować rekordu i przypisać do pola relacji w jednostce pocztowej.
... Więc zakładając Mam UploadedImage
a UrlImage
podmioty, myślałem o posiadanie setImages
sposób w jednostce post
, który sprawdza za każdym obrazie robi się, jeśli jest dodany lub adres URL, a następnie wywołuje albo setUploadedImages
lub setUrlImages
.
Potrzebuję jednak jakiegoś wirtualnego repozytorium images
, aby załadować obrazy w ten sam sposób.
Brzmi to nieco skomplikowane, a ja zastanawiałem się:
- Jak mogę mieć wirtualny podmiot doktrynę (z repozytorium i wszystko)?
- Czy jest lepszy projekt?
Czy rozważałeś użycie [Mapowania dziedziczenia] (http://www.doctrine-project.org/docs/orm/2.1/en/reference/inheritance-mapping.html)? – Orbling
@Organizowanie w jaki sposób? I jak rozwiąże "problem" decydowania o tym, co zrobić z każdym typem? – Doron
Cóż, używając Mapowania dziedziczenia, możesz mieć superklasę, która reprezentuje oba typy, a następnie mogą być obsługiwane razem. Mogą mieć te same metody i robić różne rzeczy w zależności od podtypu. – Orbling