Procházení výsledku $this->connection->query(…) v cyklu

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

Zdravím všechny,
narazil jsem na zvláštní věc, pokud dostanu data pomocí

<?php
public function getAll()
{
	$q = "SELECT * FROM semestr;";
	return $this->connection->query($q);
}
?>

a iteruji je v cyklu foreach, tak napoprvé se kolekce projde celá a v pořádku.
Problém vznikne pokud chci kolekci iterovat znovu, již žádná data nedostanu.

<?php
	$kolekce = $this->myRepository->getAll();
	foreach($kolekce as $k) {
		//Do something
	}
	// Tady ok

	reset($kolekce);
	foreach($kolekce as $k) {
		//Do something
	}
	//Tady už není OK

?>

A to i když před druhým cyklem zkusím zavolat reset na $kolekce.

Poradí mi někdo, v čem je problém.

Děkuji.

David Matějka
Moderator | 6445
+
0
-

to je chyba PDO, v nette 2.1 uz tento problem neni, jelikoz se uz nededi od PDO* trid, ale je vyuzita kompozice.

v 2.0 budes muset udelat:

$kolekce = iterator_to_array($this->myRepository->getAll());
Richard.Bazant
Člen | 8
+
0
-

Super děkuju za radu a za vysvětlení, tohle funguje :)