PetrP / Orm

http://orm.petrprochazka.com
15 stars 2 forks source link

nefunkční Repository::clean() #59

Open paranoiq opened 11 years ago

paranoiq commented 11 years ago
$entity = new WhateverEntity;
$repository->attach($entity);
$repository->clean();
$repository->flush(); // entita se uloží, ačkoliv by neměla

$entity = $repository->getById(1);
$entity->someParam = "whatever";
$repository->clean();
$repository->flush(); // entita se uloží, ačkoliv by neměla
PetrP commented 11 years ago

V jakém usecasu jsi potřeboval clean použít? Protože já jsem zatím na žádný nenarazil.

paranoiq commented 11 years ago

mám to chápat jako "to není chyba, protože já to nepoužívám?" :]

use case je: "dojde k chybě, chci zahodit data, ale uložit o tom záznam."

PetrP commented 11 years ago

Není to chyba protože jsem to nikdy neprogramoval tak aby to takhle fungovalo. Je chyba že jsem to tak nikdy nenaprogramoval. Protože to by bylo očekávané chování. Myslím že na to mám i velmi staré todo. Nikdy jsem tohle chování nenaprogramoval protože jsem na php request/response způsobu života nikdy podobnou funkci nepotřeboval.

To co jsi popsal nechápu jako usecase ale jako testcase, který jsem pochopil už v první zprávě. Zajímá mě jak a proč jsi chtěl clean použít. Abych si ospravedlnil že existuje rozumný usecase proč podobnou funkci implementovat nebo naopak neexistuje a clean odstranit aby nemátl. Nemá to úplně triviální řešení a je potřeba větší množství změn aby to bylo možné.

paranoiq commented 11 years ago

používám to přesně k tomu co jsem napsal. alternativy jsou - a) uložit to mimo Orm (třeba přes samotné Dibi), b) použít nový repository container c) logovat mimo db v daném případě nedává smysl

btw: jako work-arround prostě vyprazdňuji všechny IdentityMapy. nevím jestli je opravdu nutné implementovat vracení entit do původního stavu, jak píšeš v todočku v kódu