Hey Ludwig, can you move this (very good) bug report to DoctrineModule issues? It's really a tricky one :\
Marco Pivetta http://twitter.com/Ocramius http://ocramius.github.com/ On 13 November 2012 04:30, Ludwig Ruderstaller <[email protected]> wrote: > Hi, > > Simple setup. Longer Story :-) > > Table Agency with various fields > Table Mandator with various fields > > mandatorId is a FK in Agency. > > I use the DoctrineEntity Hydrator in the Forms. > > For all ID's where the mandatorId is NOT 1 its working. if its 1 it fails. > > The only difference is the user which I'm logged in also belongs to > mandatorId 1. (i can reproduce it, if I change this users mandatorId to > eg. 3 then 3 will fail and 1 will work) > > And here comes the funny part. > As soon as Doctrine uses the Proxy Class and not the Entity itself, the > id is of type String and this invokes the notice. > > its kinda hard to explain, but take a look at the gist, and you will see > what i mean. > https://gist.github.com/4063648 > > This are var_dumps of $attributes from the > Zend\Stdlib\Hydrator\ClassMethods::extract method: > in the working version ( > https://gist.github.com/4063648#file_1_working%20version ) the mandator > is of type Admin\Entity\Mandator and has an protected mandatorId. > > > in the failing version ( > https://gist.github.com/4063648#file_2_faling%20version ) the mandator > is of type DoctrineORMModule\Proxy\__CG__\Admin\Entity\Mandator which > have the mandatorId but it seems it cant be found by extractValue. > > I'm sure this is a bug, but I can't figure out where it originates: > Doctrine\ORM\Persisters\BasicEntityPersister? > DoctrineORMModule? > DoctrineEntity Hydrator? > Zend ClassMethods Hydrathor? > > As you can see in the failing version, the mandatorId in the _identifier > Array is of type string. (which leads to the notice). > > my last try to quick fix this, was to typecast the getMandatorId method > in the Entity, as you can see in the proxy class generated by doctrine ( > https://gist.github.com/4063648#file_8_mandator%20proxy.php ) if its not > initialized its already casted to int. > But as the notice talks about EntityPersister i guess it is initialized > and it "__loads" the entity. as this is using parent::getMandatorId() an > forced cast to int should help... but it didn’t. > > So I'm currently out of ideas, I wasted the last couple hours on this. > Any help would be much appreciated. > > > TIA Ludwig > > -- > Ludwig Ruderstaller > http://www.cwd.at > > -- > List: [email protected] > Info: http://framework.zend.com/archives > Unsubscribe: [email protected] > > >
