Nette\Database problém. Co to je?

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

Já nevím, jestli jsem blbej, já to prostě nevidím, nebo je někde nějaká chybička.

Do šablony si pošlu Nette\Database\Table\Selection $a (obsahující 3 řádky – dumpne to 3)

dump($this->attachments->count());
$this->template->a = $this->attachments;

Když v šabloně napíšu:

{$a->count()}
{$a->where('addon_id',0)->count()}
{$a->count()}

Tak mi to vypíše 3 2 2

První trojka je správně, dvojka je správně protože dva záznamy mají addon_id = 0, ale proč tam je ta další trojka to nechápu :(

Proč se to děje?

Editoval thm (24. 6. 2013 17:16)

duke
Člen | 650
+
0
-

Děje se tak proto, protože volání metody where() mění stav objektu $a.

thm
Člen | 147
+
0
-

Aha :) Díky moc! Ještě mi to asi nemyslí objektově…

duke
Člen | 650
+
0
-

Ono to jde udělat objektově i tak, aby metoda where() vracela nový objekt (a pak by chování bylo takové, jaké sis původně představoval), a pravděpodobně to tak i v budoucnu v Nette fungovat bude, viz. Nette\Database\Table refactoring.