Nette nevráti správny SQL výsledok (napriek tomu, že command je spravny)

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

Ahojte,
Mám jednoduchý SQL command ktorý mi má vratit companyID zo stlpca company a počet rovnakých ID.
Comand vyzerá nejako takto:

SELECT company, COUNT(company) FROM users GROUP BY company

Pokiaľ ho zadám do PHPMYADMINA tak mi to vypíše krásny výsledok, pokiaľ ho zadám do nette vracia mi to nezmysel, ktorý vyzerá nejako takto:

array (1)
"'companiesUserCount'" => "companiesUserCount" (18)

Model:

	function getAllCompanyUsersCount()
	{
		return $this->db->fetchPairs('SELECT company, COUNT(company) FROM users GROUP BY company');
	}

Presenter:

	public function renderDefault()
	{
		$this->template->companies = $this->facade->getAllCompanyStatistics();	//Iná metóda, prakticky nepodstatná pre tento účel
		$this->template->companiesUserCount = $this->facade->getAllCompanyUsersCount();
	}

a v template mám zatial len: {dump companiesUserCount} (výsledok som vypísal vyššie.

Vedel by mi niekto poradiť čo robím zle? (Cache som zmazal už aspon 10x)

Namespace
Člen | 77
+
0
-

Ahoj,
chybu bych hledal zde:

return $this->db->fetchPairs('SELECT company, COUNT(company) FROM users GROUP BY company');

Zkus

$this->db->query('SELECT company, COUNT(company) FROM users GROUP BY company')->fetchAll();

Doporučuji načíst https://doc.nette.org/…ase/explorer#…

David Matějka
Moderator | 6445
+
0
-

Jakou mas verzi nette? mne to jede ok (zkouseno na 2.3 i 2.2).

Zkus aliasovat ten count, COUNT(company) AS count

Mysteria
Člen | 797
+
0
-

Pokud používáš NDBT, tak třeba takhle, pokud používáš jenom čistě SQL, tak to ti neřeknu, protože to nepoužívám.

function getAllCompanyUsersCount() {
	return $this->database->table('users')->select('company, COUNT(company) count')->group('company')->fetchPairs('company', 'count');
}

Editoval Mysteria (18. 3. 2015 18:29)

Andurit
Člen | 131
+
0
-

Vďaka za koment, bohužiaľ mi to nepomohlo. Tažko povedať kde môže byť problém. Povedal by som, že sa to ani nepokúša ten result vrátiť.

Andurit
Člen | 131
+
0
-

Čauko vďaka za koment, bohužiaľ bez zmeny, nette verzia je ta aktualna najnovšia stable

Čo som vyskúšal:

1. Do pôvodnej metody som dal iný SQL statment no napriek tomu sa mi vráti:
"'companiesUserCount'" => "companiesUserCount" (18)

2. V pôvodnej metode som urobil úmyselnú chybu v SQL statmente, okamžite to vypľulo chybu. Takže to evidetne netaha odniekiaľ z cachu.

3. Skúsil som získať údaje ktoré potrebujem do iného statmentu a teda starý statment ktorý mi vracal len company a SUM(query) som pridal COUNT,
return $this->db->fetchPairs('SELECT company, SUM(query), COUNT(company) FROM users GROUP BY company');

Bohužiaľ mi to vráti len pole s company a SUM(query) ten count vôbec.

Editoval Andurit (19. 3. 2015 11:23)

David Matějka
Moderator | 6445
+
0
-

uz to vidim, ty jen spatne dumpujes, chybi ti tam $ , takze {dump $companiesUserCount}

Andurit
Člen | 131
+
0
-

FIXED!
Vďaka, vôbec som si to nevšimol

Editoval Andurit (19. 3. 2015 12:57)