(Entity-Repository-Mapper) co vse ma ulozit metoda save v ramci mapperu?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
zac24
Člen | 41
+
0
-

Metoda uloz v mapperu prislusnemu k entite by mela ulozit jen prislusnout entitu nebo by mela vyvolat tutez metodu pro ulozeni i v ramci vsech podrizenych entit nebo jejich kolekci s vyuzitim jejich mapperu ? (typicky prakticky priklad clanky a prilohy). Jaky je best practice?

Editoval zac24 (12. 5. 2015 10:26)

Lukeluha
Člen | 130
+
0
-

Úplně nerozumím otázce.. Proč když provedeš změnu v nějaké entitě a zavoláš na ni save, tak by se měly znovu uložit i nějaké podřízené entity když v nich není žádná změna?

zac24
Člen | 41
+
0
-

protoze v nich zmena nastat mohla ? Totiz mozna to delam cele spatne, ale v ramci entity clanek mam vlastnost prilohy (byt ta neni obrazem tabulkoveho sloupce) a to je vlastne kolekce kterou vrati metoda vratPodleClanku repozitare priloh … pak vlastne mohu entity zanorovat a bez potizi upravit pirlohu uvnitr entity clanku a pozadat o ulozeni clanku. V takovem pripade kde jsem upravil prilohy v ramci entity clanku bych od metody ulozeni ocekaval ze jaksi bude to zanoreni ctit a zavola ukladaci metody vsech zanorenych entit z jejich vlastnich repozitaru.

Editoval zac24 (12. 5. 2015 11:54)

Oli
Člen | 1215
+
+1
-

Jestli otázku chápu správně, tak si myslím, že to je zbytečný. Zejména tahle myšlenka mě přijde zbytečná/špatná

protoze v nich zmena nastat mohla ?

Vždyť přece víš, jestli nastala nebo nenastala změna v přílohách. Edituješ článek a víš, jestli byly změněný přílohy. Používám Doctrine a v ní to řeším v zásadě nějak takhle:

// some magic with entity $article

// Uložím změny v entitě Article do paměti
$this->entityManager->persist($article);

if ($values->attachement)
{
	// some magic with $attachement

	// uložím změny na entitě Attachement do paměti
	$this->entityManager->persist($attachement);
}

// Odešlu všechny změny z paměti do databáze
$this->entityManager->flush();
David Kudera
Člen | 455
+
0
-

Pokud updatuješ, tak je volání persist zbytečné . Teda ne vždy, podrobnější vysvětlení v dokumentaci