Nette Database – fetchParis() generuje 2 dotazy a z toho jeden špatně, Nette 2.2.3

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

Snažím se trošku optimalizovat dotazy nad databází a díky Tracy jsem zjistil že tento kód

$this->db->table("page")->fetchPairs("id", "title_cs");

generuje 2× SQL

SELECT `id`, `name_id`, `title_cs` FROM `page`

a

SELECT * FROM `page`

Protože v tabulce page není sloupec name_id, tak volání prvního dotazu vypisuje v Tracy (slouopec Time ms) error (skript běží dál, laděnka se neozve). Zajímalo by mě, proč je ten první dotaz vůbec volán a kde se vzalo to name_id. Dá se tomu nějak zabránit?

Filip Klimeš
Nette Blogger | 156
+
0
-

S Nette\DB jsem už déle nepracoval, ale pamatuju si, že nejdřív vybere všechno a pak si nacachuje metainformace o sloupcích, které má vybírat. Občas mi to blbnulo, když jsem měl v temp/cache zastaralá data. Není možné, že Ti tam taky nějaká zbyla?

Editoval Filip Klimeš (12. 3. 2015 17:37)

cokoliw
Člen | 4
+
0
-

Jojo díky, pomohlo smazat cache, nečekal jsem že by tohle mohlo mít vliv na výsledek. Kromě toho ještě pomohlo taky přidat select(„*“), ale smazat cache je rozhodně lepší řešení.

$this->db->table("page")->select("*")->fetchPairs("id", "title_cs");