| Autor | Zpráva | ||
|---|---|---|---|
| aDAm Profil |
#1 · Zasláno: 4. 7. 2013, 12:39:11
Zdravím,
lze nějak v doctrině definovat relaci mezi tabulkami s tím že tam zadám i nějakou podmínku? Např. mám entitu USER a entitu MEDIA. V entitě MEDIA jsou uloženy obrázky a je tam i sloupec TYPE kde je definováno že se soubor je avatar, portofilo_foto, atd. A v entitě USER chci přidat prvek s vazbou na entitu MEDIA ale aby to zahrnovalo jen vybrané záznamy typu AVATAR Ve zkratce jedno uložiště kde jsou soubory a mají příznak jakého jsou typu (avatar, fotka, dokument) a mít možnost mít entitu jen daného typu. |
||
| ShiraNai7 Profil |
#2 · Zasláno: 4. 7. 2013, 14:48:32
Pokud to chceš rozlišit dle typu v relaci, použil bych single table inheritance pro vytvoření potomků entity MEDIA (AVATAR extends MEDIA, ...) Relaci bys tedy specifikoval přímo na konkrétní "subentitu" a zbytek práce nechal na doctrine (záznamy si rozliší automaticky dle daného @DiscriminatorColumn).
|
||
| aDAm Profil |
No tuhle stranku o inheritaci jsem našel ale nepřišel jsem na to jak se tam definuje který column to definuje tedy v mém případě "media_type"
/**
* @Entity
* @InheritanceType("SINGLE_TABLE")
* @DiscriminatorColumn(name="discr", type="string")
* @DiscriminatorMap({"avatar" = "\Modely\Entity\Avatar", "foto" = "\Modely\Entity\Foto"})
*/
class Media
{
// ...
}Edit: ale tipuju že to je zadefinováno v tom DiscriminatorColumn že? tedy bych měl mít: @DiscriminatorColumn(name="type", type="string") |
||
| ShiraNai7 Profil |
#4 · Zasláno: 4. 7. 2013, 16:54:56
/**
* @Entity
* @InheritanceType("SINGLE_TABLE")
* @DiscriminatorColumn(name="media_type", type="string")
* @DiscriminatorMap({"avatar" = "Modely\Entity\Avatar", "foto" = "Modely\Entity\Foto"})
*/+ nikde v cestách ke třídě entity se nepíše počáteční zpětné lomítko |
||
|
Časová prodleva: 12 let
|
|||
0