Autor Zpráva
aDAm
Profil
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
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
/**
 * @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

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0