Neúplný výpis dat z databáze

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

Zdravím, dovolte mi položit začátečnickou otázku. Snažím se přijít na to, proč mi Nette nevypisuje celou tabulku dat z DB, ale pouze poslední řádek. Pokud vymažu cache, přihlásím se a nechám si vypsat tabulku je vše OK. Jakmile ovšem stránku byť jen reloadnu zobrazí se opět pouze poslední záznam.

Laděnka hlásí, že jsou načtené všechny záznamy (rows). Zkoušel jsem již různě manipulovat s proměnnými i šablonou, ale bez výsledku.

Díky za odpověď.

Taps
Člen | 167
+
0
-

procházíš data v šabloně pomocí foreach ?

ricco24
Člen | 141
+
0
-

Mohol by si sem dať časť kódu kde a ako posielaš dáta do šablóny a ako ich v šablóne presne vykresluješ.

iskejp
Člen | 41
+
0
-

Ano, foreach používám. Ostatně, jak jsem psal. Při vymazaní cache to funguje normálně. Až po obnovení to selže.

EDIT: Zjistil jsem, že ve výpisu 4 proměnných pole jsou 3 s NULL a jedno poslední s TRUE.

Zde je kód. Jde vlastně o parafrázi quickstartu…

komponenta: (zkoušel jsem to i bez komponent)

use Nette\Application\UI,
    Nette\Database\Table\Selection;

class ArticleList extends UI\Control {

    private $articleList;

    public function __construct(Selection $articles){
        parent::__construct();
        $this->articleList = $articles;
    }

    public function render(){
        $this->template->setFile(__DIR__.'/ArticleList.latte');
        $this->template->article = $this->articleList;
        $this->template->render();
    }
}

presenter:

public function createComponentArticleList() {
    $articles = $this->context->createArticles()->
	where(array('user_iduser' => $this->getUser()->getId()));
    $articleList = new ArticleList($articles, $this->context->createArticles());
    return $articleList;
}

šablona:

<table>
    <thead>
    <tr>
        <th>Čas vytvoření</th>
        <th>Nadpis</th>
        <th>Perex</th>
        <th>Type</th>
    </tr>
    </thead>
    <tbody>
    {foreach $article as $articleMember}
    <tr>
        <td>{$articleMember->inserttime|date:'j. n. Y'}</td>
        <td>{$articleMember->title}</td>
        <td>{$articleMember->perex}</td>
        <td>{$articleMember->user->name}</td>
    </tr>
    {/foreach}
    </tbody>
</table>

Editoval iskejp (10. 4. 2012 1:01)

iskejp
Člen | 41
+
0
-

Zkoušel jsem opět napravit chybu, ale bez úspěchu. Vkládám DUMP proměnných.

ArticleList(10) ▼ {
   articleList private => Articles(23) ►
   template private => NULL
   invalidSnippets private => array(0)
   snippetMode => NULL
   params protected => array(0)
   components private => array(0)
   cloning private => NULL
   parent private => NULL
   name private => NULL
   monitors private => array(1) ▼ {
      "Nette\Application\UI\Presenter" => array(4) ▼ [
         0 => NULL
         1 => NULL
         2 => NULL
         3 => TRUE
      ]
   }
}

Díky všem za případnou pomoc.

jtousek
Člen | 951
+
0
-

Na mě to působí jako další problém s cache Nette\Database. Už se jich tady na fóru řešilo několik. Asi by to chtělo nějaký minimální test-case kde k té chybě dochází.

EDIT: Verze Nette? Zkoušel jsi aktuální dev z GitHubu? Může klidně jít o něco již opraveného.

Editoval jtousek (30. 4. 2012 23:21)

iskejp
Člen | 41
+
0
-

jtousek: Díky, bylo to skutečně již opraveno a verze 2.0.3 jede.