Nette\Database a chyba „Invalid argument supplied for foreach()“

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

Zdravím,

používám PHP ve verzi PHP 5.3.13 a Nette v poslední verzi z https://github.com/…its/f-db-dev.

Problém je následujícím kódu:

<?php

foreach ($rows as $row) {
	foreach ($row->related('row_related') as $row_related) {
		print $row_related->related->id;
	}
}

?>

Vše probíhá v pořádku, má-li první načteny záznam z $rows nějaké záznamy v tabulce row_related – tedy dojde k natažení záznamů z této tabulky a vše jede jak má, ale – nemá-li první záznam žádné potomky v row_related, nedojde k zavolání dalšího obslužného SQL a při najetí na první záznam z $rows který potomky v row_related má dojde k chybě „Invalid argument supplied for foreach()“.

Chyba by se jistě vyřešila tím, pokud by po prvním zavolání $rows s potomky v row_related se zavolal obslužný SQL dotaz… – rád se případně ujmu i řešení (docela mi na tom hoří projekt, a moc se mi teď nechce to přehazovat na něco jiného), pokud mě někdo odkáže kde mám hledat (přeci jen, to co probíhá uvnitř Nette\Database mi občas příjde jako docela black magic…).

Případně jsem si říkal, jestli se nedá donutit ten ActiveRow aby si to zavolal?

Předem díky za rady!

tomas.lang
Člen | 53
+
0
-

Jaký je vlastně rozdíl mezi větvemi f-db-dev a f-database-refactoring? (otázka asi hlavně na Honzu) Jinak díky za tip, vyzkouším…

vvoody
Člen | 910
+
0
-

Neviem čo je v f-db-dev, ale f-database-refactoring Hrach linkuje všetkým, ktorý majú problém s Nette/Database

jtousek
Člen | 951
+
0
-

f-db-dev je hrachova vývojová větev, řekněme alpha verze, f-database-refactoring je už víceméně odladěná beta verze a brzy by se měla objevit v oficiálním Nette 2.1.