Nette\Database zla optimalizacia sql prikazov
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- David Ďurika
- Člen | 328
Zdravim
ako z nadpisu vypliva mam problem s tym ze ak foreach-ujem nejaky selection
v presentery a potom este raz v template a v template pristupujem aj k takym
datam ku ktorym v presentery nepristupujem tak my to hadze chybu…
snad som to napisal pochopitelne ;)
- Vojtěch Dobeš
- Gold Partner | 1316
Bugy v Nette\Database
bedlivě sleduje
@hrach, doporučuju ještě napsat, jakou
přesně chybu, verzi Nette atd.
- David Ďurika
- Člen | 328
- verziu mam 2.0.3 stabilní, uvolněný 4. 4. 2012
oka tak tu to je :
<?php
// presenter
public function renderList() {
$assetList = array();
foreach ($this->asset->where('navigation_id', NULL) as $parent) {
$parent->isChild = false;
$assetList[] = $parent;
foreach ($parent->related('navigation') as $child) {
$child->isChild = true;
//if($child->page); ked toto ODkomentujem tak nehadze ziadne cyby
$assetList[] = $child;
}
}
$this->template->assetList = $assetList;
}
?>
<?php
// template
<tbody n:inner-foreach="$assetList as $asset">
<tr>
<td>{if $asset->isChild}-- {/if}{$asset->label}</td>
<td>{if $asset->page}{$asset->page->title}{/if}</td>
</tr>
</tbody>
?>
<?php
CREATE TABLE `navigation` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`navigation_id` int(11) unsigned DEFAULT NULL,
`label` varchar(255) DEFAULT NULL,
`page_id` int(11) unsigned DEFAULT NULL,
`created` datetime DEFAULT NULL,
`updated` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `navigation:navigation_id` (`navigation_id`),
KEY `navigation:page` (`page_id`),
CONSTRAINT `navigation:navigation_id` FOREIGN KEY (`navigation_id`) REFERENCES `navigation` (`id`) ON DELETE SET NULL,
CONSTRAINT `navigation:page` FOREIGN KEY (`page_id`) REFERENCES `page` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
CREATE TABLE `page` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(255) DEFAULT NULL,
`slug` varchar(255) DEFAULT NULL,
`text` longtext,
`published` datetime DEFAULT NULL,
`created` datetime DEFAULT NULL,
`updated` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
?>
vysledok: http://grab.by/d43s (ta chybova hlaske je asi mimo, tak som racej odfotil celu ladenku)
Editoval achtan (12. 4. 2012 21:28)