Hodnota v entite je stara
- nette.programator
- Člen | 4
Ahoj,
mam tu PHP kod, ktery pouziva LeanMapper, u ktereho mam podezreni, ze obsahuje
osklivou chybu.
Kod je velice jednoduchy, ve zkratce by se dal shrnout takto:
// nacte aktualniho uzivatele z user repository
$user = $this->getUser();
// ... zde se neco deje, trva to dlouho, radove sekundy, ale i k 10 sekundam ...
if (!$user->computeRequestsLeft()) {
// ...
}
// pokud se to hlavni povedlo, odecteme uzivateli kredit z uctu
$user->requestsLeft = $user->requestsLeft - 1;
$userRepository->persist($user);
// ... zde se posle vysledek ...
Ja mam pocit, ze takovyto kod muze nespravne zapsat pocet zbyvajicich kreditu do DB po odecteni, pokud mezitim prijde jiny pozadavek, ktery dobehne drive.
Jak se takova vec opravi? Potreboval bych pred odectenim kreditu „znovu nacist“ celeho usera do $user, abych mel v PHP aktualni hodnoty. Jak to udelat?
Edit: upresneni – LeanMapper
Editoval nette.programator (2. 5. 2015 17:20)
- nette.programator
- Člen | 4
diky za odpoved, ale co v tve odpovedi je $em ?
refresh metody jsem u niceho nenasel
- nette.programator
- Člen | 4
bal jsem se nejakeho kesovani nebo tak, ale uz mi bylo vysvetleno, ze tam nic takoveho neni, takze skutecne pouze zavolat znovu getUser, coz nacita znovu z db entitu a je to
dik moc za pomoc