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
+
0
-

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
+
0
-

Bugy v Nette\Database bedlivě sleduje @hrach, doporučuju ještě napsat, jakou přesně chybu, verzi Nette atd.

David Ďurika
Člen | 328
+
0
-
  • 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)