Nette/Database/Selection – foreach nad jednim vysledkem?

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

Dobré odpoledne,
právě jsem nainstaloval Nette pomocí composeru, ale zjistil že se nechová tak, jak jsem byl zvyklý-očekával jsem…

V presenteru:

  private $database;

    public function __construct(Nette\Database\Context $database) {
        $this->database = $database;
    }

    public function renderDefault() {
        $this->template->tests = $this->database->table("tests")->where('id', '31');
    }

V šabloně

{$tests->name}

Očekával jsem, že se vypíše obsah sloupce „name“, místo toho vypíše název tabulky

Oproti tomu:

  {foreach $tests as $test}
        {$test->name}
   {/foreach}

Už se chová tak jak chci. Znamená to tedy že musím použít foreach i nad jedním řádkem? Co dělám špatně-jak to mám udělat jinak?

Děkuji

voda
Člen | 561
+
+2
-

Výběr jednoho konkrétního řádku se provádí pomocí metody Selection::get(). Je to „filtrovací“ metoda, která vrací přímo instanci ActiveRow.

viz dokumentace

Filip Klimeš
Nette Blogger | 156
+
0
-

Selection::get($key) vrací jeden konrétní řádek podle klíče $key. Pokud potřebuješ složitější podmínku, můžeš použít Selection::fetch(), který vrátí první řádek v Selection (další volání by vracela prvky tak jak jdou za sebou).