Pocet zaznamu v tabulce – count(*)

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

Chci zjistit pocet zaznamu v mysql tabulce – select count(*) from users .
Uz jsem zjistil, ze toho mohu docilit takto:

$selection=$database->table(‚users‘)->select(„count(*) count“);
foreach ($selection as $count) {
echo $count->count;
}

Ale select mi vzdy bude vracet pouze jeden zaznam, pripada mi proto nesmyslne pouzivat „foreach“ . Mohu nejak vysledek dotazu ulozit do jedine promenne tak, abych nemusel pouzivat „foreach“?
Domnival jsem se, ze bych pozadovaneho efektu mohl docilit pomoci „echo $selection[‚count‘]“, ale evidentne to nefunguje.
Diky.

Felix
Nette Core | 1247
+
-3
-

Můžeš rovnou použít:

$database->table('users')->count();
Oli
Člen | 1215
+
+3
-

To o co se snažíš ty, je vypsání activeRow, ale vrací ti to selection.

Správně to zapíšeš takhle:

$count=$database->table(‚users‘)->count('*'); // vrací int počet řádků v tabulce

Viz selection API.

edoras
Člen | 21
+
0
-

Super, dekuji vsem za radu. Funguje. :)

Petr Hudík
Člen | 49
+
0
-

Pomocí ->count() se nejdříve vytáhnou všechny záznamy a teprve poté se nad nimi zavolá count($rows). Proto pokud nás zajímá pouze číslo, je daleko výhodnější použít ->count('*'), které do databáze pokládá tento agregační dotaz:

SELECT COUNT(*) FROM `users`