Výběř řádku dle primárního klíče

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

Zdravím, v podstatě se mi nabízí 3 možnosti, jak toho dosáhnout:

$this->database->table('user')->get($id); // Generuje vždy SELECT *
$this->database->table('user')->wherePrimary($id)->fetch(); // Generuje vždy SELECT *
$this->database->table('user')->where('id', $id)->fetch(); // Generuje SELECT jenom potřebné sloupce

Z toho mě vychází, že první dva se hodí, když potebuju všechny sloupce a ten třetí, když vím, že nebudu potřebovat všechny? Myslím si to tak správně? Nebo jak poznat, co kde použít?

Díky.

Tomáš Kolinger
Člen | 136
+
0
-

Je to IMHO jen alternativní zápis. Sloupce se vybírají podle toho, jaké používáš… To se následně uloží do keše a následně se místo * volaj už konkrétní sloupce.

Takže si používej zápis, jaký se ti líbí. Já osobně používám všude ->where, protože je to univerzální a lehce to přepíšeš na jiný (ne-primarní) sloupec.

Editoval Tomáš Kolinger (22. 2. 2014 18:54)

Mysteria
Člen | 797
+
0
-

@Tomáš Kolinger: No právě že ne, ty první dva způsoby mě vždy generují SELECT * i při několikanásobném refreshy. Proto se na to ptám, rád bych používal ten první, ale jsem kvůli tomu „nucen“ používat ten třetí.

EDIT: Aha, problém byl jinde, všechny 3 způsoby generují SELECT potřebné sloupce, z nějakého důvodu mi to na hostingu vybíralo u prvních dvou způsobů pořád všechny sloupce, po smazání cache to funguje pro všechny tři způsoby stejně.

Editoval Mysteria (22. 2. 2014 19:16)

David Matějka
Moderator | 6445
+
0
-

ted jsem to zkousel a i pri get() se mi pouzije cache. jakou verzi nette pouzivas? prijde mi divny, ze by to vzdy davalo *, jelikoz interne wherePrimary vola where…

Mysteria
Člen | 797
+
0
-

@matej21: Viz edit mého posledního příspěvku. Nějak mi to na hostingu odmítalo automaticky přegenerovat cache NDBT, po manuálním smazání to už funguje v pohodě.