kdyby/doctrine jak na lazy dotazy

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

Mám dotaz,

když jsem používal Nette\Database, tak se dotaz provedl až když jsem jej procházel pomocí foreach

u kdyby\doctrine

se mi provede hned.
př.

$week = $this->em->find(Weeks::class,$id)

Jak řešít, když nakešujete šablonu a nechcete, aby se prováděly dotazy?

David Matějka
Moderator | 6445
+
+1
-

Pro kolekce entit muzes pouzit ResultSet (pripadne rovnou v kombinaci s query objecty)

Fetchovani jednotlivych entit (tzn find, findOneBy..) tak snadne nebude (a to nefunguje lazy ani v pripade nette database). v pripade fetchovani dle id by slo pouzit getReference, pro fetchovani dle jine podminky by sis musel udelat treba nejaky lazy wrapper, ktery by zavolal dotaz az ve chvili, kdy pristoupis k datum.

pitr82
Člen | 121
+
0
-

@DavidMatějka díky moc za nakopnutí, ResultSet s QueryBuildrem a createQuery mi naprosto vyhovuje.

Výsledek findu jsem si dal do cache a invaliduji jej při změně.

Díky

David Matějka
Moderator | 6445
+
0
-

Výsledek findu jsem si dal do cache a invaliduji jej při změně.

je to nutne? tohle mi pripada jako predcasna optimalizace, nalezeni zaznamu dle primary neni prilis narocna operace

mkoubik
Člen | 728
+
0
-

Obecně to jde pomocí nějakého lazy wrapperu. Můžeš použít třeba Sloth, nebo kouknout do zdrojáků a napsat si těch pár řádků sám.

pitr82
Člen | 121
+
0
-

@mkoubik diky, prostuduju