Foreach s Kdyby\GeneratedProxy

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

Ahoj,

pro usnadnění ukládání dat mám repositáři

<?php
...
            foreach ($data as $key=>$value) {
                    $key = ucfirst($key);

                    $entity->$key = $value;
            }
...
?>

Problém ovšem nastává, když mám spojené entity. Do objektu mi neleze přímo entita, ale Doctrine tam dává sůj objekt:

data
protected => Kdyby\GeneratedProxy\__CG__\App\Model\Entities\Entity#e27a
__initializer__ => NULL
__cloner__ => NULL
__isInitialized__ => TRUE
/* klasická data */
....

Jak mám projít takovou strukturu prosím?

mkoubik
Člen | 728
+
+1
-
  • ten „svůj objekt“ je proxy té entity, takže všechno co funguje s tou entitou by s ní mělo fungovat taky
  • tohle smrdí mass-assignmentem, pokud už potřebuješ do entity posílat „všechny“ data najednou, tak si tam přidej metodu public setData(array $data), ale radši si to nějak rozděl na věci co se nastavujou společně a udělej si na to value objecty
  • ujisti se že v té entitě nejde změnit něco co by rozhodně nemělo jít (https://www.google.cz/webhp?…)
  • repository neslouží k ukládání dat