Zdravím, potřeboval bych poradit: umí Kdyby/Doctrine pracovat s interface? Když budu mít nějakou asociaci, například @ORM\ManyToOne(targetEntity="MyInterface", inversedBy="someColumn") a budu mít několik tříd implementujících tento interface, bude to fungovat nebo nemohu použít interface v target entity? Dědičnost bohužel nemohu v tomto případě použít, protože ji používám na něco jiného.

Ahoj, nevím jestli je to to co myslíš, ale Kdyby/Doctrine by měl podporovat i ResolveTargetEntityListener, ale osobně jsem to nezkoušel možná to budeš muset zkombinovat s Kdyby/Doctrine#91. Dyštak to vyzkoušej a dej vědět :)

Pokud jsem to správně pochopil, tak tohle je řešení pro 1 entitu, která implementuje ten interface, ne? Nebo je to použitelné i pro více entit, které implementují ten inteface? Já jsem našel tohle: http://www.theodo.fr/…nd-entities/ Což by asi můj problém řešilo, ale trochu se bojím toho čarování s metadaty.

Napadla mne alternativa k tomuhle a to: Použil bych kompozici a že bych si vytvořil novou entitu Payer a každý, kdo by implementoval IPayer by měl property, která by byla oneToOne unidirectional na entitu Payer. Takže Payment by měla u from a to asociaci na Payer a všechny možné entity, které by měly být schopny platit, by měly jako jeden field Entitu Payer. Ale k tomu mi vyvstává otázka: Je tenhle nápad z hlediska OOP správný? Není to nějaké naprasené obejití? https://creately.com/…UUWZZa2h0%3D

Zároveň můžu zmínit, jak to mám teď, ale přijde mi to neudržitelné: Teď to mám udělané tak, že mám abstraktní třídu Payment a z ní mám spoustu potomků. Mám entitu Client a entitu Course, které mohou manipulovat s penězi (a nemohu mít abstraktního předka pro Client a Course) a mám PaymentFromClientToCourse, PaymentFromClientToClient, PaymentFromCourseToClient, kde properties from a to mají asociaci přímo na konkrétní entitu. Ale u tohohle se bojím, že jak bude aplikace růst, že tam budu mít spoustu, ale opravdu spoustu Payment tříd. Co si myslíš o tomhle řešení? https://creately.com/…55Zy8gQ3I%3D


You must first log in to participate in this discussion