Třída pro práci s vlastností Entity

- David Kregl
 - Člen | 52
 
Ahoj,
mám entitu PostTraining, která dědí od entity Post.
/**
 * @ORM\Entity
 */
class PostTraining extends Post
{
    const TRAINING_PLACE = 'trainingPlace';
	…
    /**
     * @return string
     */
    public function getType()
    {
        return parent::TYPE_TRAINING;
    }
	…
    /**
     * @return null
     */
    public function getTrainingPlace()
    {
        return $this->getMeta(self::TRAINING_PLACE);
    }
	…
    /**
     * @param $type
     */
    public function setTrainingType($type)
    {
        $this->updateMeta(self::TRAINING_TYPE, $type);
    }
	…
TRAINING_TYPE a další vlastnosti jsou reprezentovány ve sloupci meta
v Entitě post jako JSON. Tento sloupec je obsluhován metodou
GetMeta() a SetMeta() ve třídě
Post.
{
	"date":"2016-04-13 17:20:33",
	"trainingType":"1","trainingPlace":"SpaceGym, Kladno",
	"trainingDuration":"3600",
	"exercises":[
		{
		"name":"Cvik #1",
		"notice":"4x5 20Kg"
		},
		{
		"name":"Cvik #2",
		"notice":"4x10 80Kg"
		}
	]
}
Chtěl bych, aby třída PostTraining měla vlastnost
$exercises, která bude obsluhována nějakou pomocnou třídou
s metodami setName(), setNotice(),
getName() a getNotice().
Každá instance třídy PostTraining může mít neurčitý počet cviků včetně žádného.
Jak ji vytvořím, abych s ní mohl pracovat už ve chvíli, kdy existuje instance třídy PostTraining? Má to být taky entita? (myslím, že nemusí)
Představuji si, že bych ve třídě PostTraining měl property $exercises, která by byla pole jednotlivých instancí třídy Exercise (moje budoucí pomocná třída). Ale nevím, jak svou myšlenku převést do kódu, aby to bylo košér a podle nějakých zavedených konvencí.
Děkuji.
Editoval David Kregl (27. 11. 2016 22:51)

- F.Vesely
 - Člen | 369
 
Proc to proboha mas jako JSON v nejakem Meta? Timhle si rozhodne praci neulehcis, akorat si hazis klacky pod nohy. Ted resis mapovani JSONu na promenne a relace, za chvili budes resit vyhledavani, pak razeni, ruzne agreagace, atd. Radim ti, zkus nad tim zapremyslet znovu, vykasli se na nejake Meta promenne a udelej si to pekne objektove, dokavad jsi na zacatku.

- David Kregl
 - Člen | 52
 
A co když jsem si jistý, že s těmi daty nebudu dál pracovat? Jde mi jen o tu třídu Exercises.
Děkuji

- ZahorskyJan
 - Člen | 59
 
@DavidKregl myslím, že f.vesely se tím snažil naznačit, že by ta „pomocná třída“ měla být entita s asociací na tu entitu PostTraining. Potom property $excercises bude ArrayCollection s entitami Excercise a v ní už můžeš dělat set/get jak potřebuješ. Cokoliv jiného si myslím, že nespadá do původně dotazovaných „zavedených konvencí“. Pokud nechceš aby to byly entity, tak pracuj s obyčejným polem, které budeš do entity serializovat (v tomto případě asi rychlejší než json).