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).