vnořený foreach = 1× ze dvou reloadu error/warning

- knedle
 - Člen | 34
 
divná věc se mi stává – mám vnořený foreach – nic neobvyklého :
kod z latte sablony
    <tbody n:if="$interprets">
        {foreach $interprets as $interpret}
        <tr n:foreach="$interpret->related('interpret_song') as $interpretSong">
            <td>{$interpret->name}</td>
            <td>{$interpretSong->song->title}</td>
            <td></td>
            <td></td>
        </tr>
        {/foreach}
    </tbody>
vyhazuje pri každém druhém !! reloadu warning s hláškou
Illegal offset type
přičemž ladenka chybu zobrazí zde:
<?php if ($interprets): ?>    <tbody>
    <?php $iterations = 0; foreach ($interprets as $interpret): $iterations = 0; foreach ($interpret->related('interpret_song') as $interpretSong): ?>        <tr>
                <td><?php echo Nette\Templating\Helpers::escapeHtml($interpret->name, ENT_NOQUOTES) ?></td>
                <td><?php echo Nette\Templating\Helpers::escapeHtml($interpretSong->song->title, ENT_NOQUOTES) ?></td>
                <td></td>
                <td></td>
            </tr>
    <?php $iterations++; endforeach ;$iterations++; endforeach ?>
připadá mi to zvláštní – že jednou kód projde, ale po reloadu stránky bez jakékoli změny, ne
asi je něco, co nevím… kde mám chybu/blbost?
edit:
další informace: SQL dotazy z ladenky
reload 1 – 3 –5…

reload 2 – 4 – 6…

verze nette poslední
že by to bylo něco mimo nette? špatná verze PHP? chyba v db?
Editoval knedle (24. 2. 2012 11:16)

- knedle
 - Člen | 34
 
další střípek:
jeden z cache souborů databáze – tj. obsahující serializovaná data
mění s reloadem 2 stavy (pokud ignoruju časové razítko):
stav A:
<?php //netteCache[01]000070a:2:{s:4:"time";s:21:"0.37641100 1330097917";s:10:"serialized";b:1;}?>a:3:{s:12:"interpret_id";b:1;s:7:"song_id";b:1;s:4:"song";b:1;}
stav B:
<?php //netteCache[01]000070a:2:{s:4:"time";s:21:"0.44480300 1330097899";s:10:"serialized";b:1;}?>a:2:{s:12:"interpret_id";b:1;s:7:"song_id";b:1;}
jen nevím zda je to příčina, nebo následek

- Jan Tvrdík
 - Nette guru | 2595
 
Zkus vypnout cachování Nette\Database a stáhnout si poslední vývojovou verzi Nette.

- knedle
 - Člen | 34
 
ještě dotaz – jak se vypne ta cache:
protože tento zápis:
...
	services:
		templateCacheStorage:
			class: Nette\Caching\Storages\DevNullStorage
		cacheStorage:
			class: Nette\Caching\Storages\DevNullStorage
		database: @Nette\Database\Connection
		authenticator: Authenticator( @database::table(users) )
		interprets:
			factory: @database::table(interpret)
		songs:
			factory: @database::table(song)
...
což je dle návodu z
https://doc.nette.org/cs/caching
services:
        templateCacheStorage:
                class: Nette\Caching\Storages\DevNullStorage
        cacheStorage:
                class: Nette\Caching\Storages\DevNullStorage
vyhazuje
Nette\DI\ServiceCreationException
Service ‚nette.cache‘: Multiple services of type Nette\Caching\IStorage found: cacheStorage, templateCacheStorage search