Jeden záznam – zbytečný COUNT a FOREACH?

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

Zdravím,

mám dva dotazy. Řekněme, že chci načíst jednu konkrétní pobočku a vím, že výsledek bude buď že je jedna nebo že není žádná. Tzn zavolám:

<?php
$pobocky = $this->database->table("pobocky")->where("url", $kod);
?>

A otázka č. 1 je tedy je, není trochu složité ověřovat jestli se vrátil ten jeden záznam přes COUNT, což vyvolá další SQL dotaz?

<?php
if ($pobocky->count("recid") == 1) {
?>

A otázka č. 2, jak vypsat nejsnadněji proměnné ze zavolaného dotazu? defaultně to dělám přes:
{foreach $pobocky as $pobocka}

ale když vím, že je to jen jeden záznam, tak je zbytečné to celé volat do foreach, ne? Klasicky v PHP jsem to řešil přes

<?php
$zaznam = mysql_fetch_array($result);
?>

a když jich bylo víc, tak teprve

<?php
while ($zaznam = mysql_fetch_array($result)) {
..
}
?>

Editoval Duch.Veliky (27. 8. 2014 18:24)

David Matějka
Moderator | 6445
+
+3
-
$pobocka = $this->database->table("pobocky")->where("url", $kod)->fetch();

vrati bud radek nebo FALSE

nanuqcz
Člen | 822
+
+1
-

Ahoj,
oba tvoje dotazy řeší metoda ->fetch(), která z výsledku vrátí jeden záznam (nebo FALSE).

$pobocka = $this->database->table("pobocky")->where("url", $kod)->fetch();
echo $pobocka->jmeno;

EDIT: jsem pomalý :-)

Editoval nanuqcz (27. 8. 2014 19:06)

Duch.Veliky
Člen | 68
+
0
-

Jo to jsem přesně potřeboval, díky :)