Databaza: Ako si v modeli dobre pripravit data
- steelbull
- Člen | 241
Model:
$result = $this->context->table(‚articles‘);
Presenter:
$this->template->articlesList = $result;
Template:
{foreach($articles as $article)}
{$article->user->fullname}
{/foreach}
Nette vygeneruje pre kazdy article jeden query.
Neda sa to urobit tak, aby k articles uz v modeli LEFT JOINlo uzivatelov a vygenerovalo vysledok jednym query?
- David Matějka
- Moderator | 6445
1. precti si, jak formatovat kod
Nette vygeneruje pre kazdy article jeden query.
jsi si jist? Ten tvuj priklad by mel vygenerovat vzdy pouze dva dotazy – jeden na clanky a jeden na uzivatele
Teoreticky se to necha joinout pro select, ale je to v rozporu s filozofii NDBT, viz doc a prvni odstavec:
Hlavní myšlenkou je načítání dat pouze z jedné tabulky a tak, aby se tyto dotazy pokládaly jen jednou. Data jsou načtena do ActiveRow instancí. Data z jiných tabulek připojených vazbami jsou načteny samostatnými požadavky – o to se stará samotná vrstva Database\Table.
Editoval matej21 (4. 11. 2014 19:09)
- David Matějka
- Moderator | 6445
Ne, jak pisu – ten tvuj priklad by mel provest (pokud nam nezatajujes nejaky kod) pouze dva dotazy