Doctrine 2 – nefunguje ukládání při přístupu přes jinou entitu
- kejlicz
- Člen | 201
Ahoj.
**
UPDATE : Nedělá to jen při přísrtupu přes vazbu, ale i při přáci
přímo s entitou.**
Prosím o radu s Doctrinou. Narazil jsem na jednu věc, které nerozumím.
Mám třeba entitu Visit, kde mám vazbu 1:N na entitu Client.
toto normálně funguje
$visit->getClient()->getName()
když ale chci něco u klienta upravit a předtím z něho nečtu
$visit->getClient()->setNeco()
tak to nejde. Prostě to ten SQL dotaz vůbec neudělá.
Když předtím z entity Client něco načítám :
$visit->getClient()->getName();
a potom hned ukládám
$visit->getClient()->setName("Josef");
tak už se editace provede.
Čím to může být?
Pokud to chápu, tak doctrina si při nějaké změně nejdřív data načte a pokud jsou to původní stejná, update se ani neprovede. Pokud se snažím nastavit třeba jméno, klienta, což je string, tak si ty data doctrina předem načtě a pokud jsou jiná, provede update. Pokud se ale snažím nastavit boolean nebo smallint, tak tak mi to ten předcházející SELECT na získání původních hodnot neudělá a jelikož je tam asi defaultně zapnutý nějaký lazy loading, bere to, že je třeba původní hodnota 0 a pokud nastavuji taky 0, tak to update neudělá, i když ve skutečnosti byla původní hodnota třeba 1.
Když vypnu lazy loading v definici entity fetch=„EAGER“, tak se to začne chovat tak jak požaduji. Je to normální?
Díky moc za radu.
Editoval kejlicz (21. 4. 2020 14:15)