I use the DoctrineFixtures package to instantiate an object at design time. In my load () method of the ORM method, I define data as associative arrays and create an entity object in a loop.
<?php // ... public function load($manager) { $roleDefs = array( 'role-1' => array( 'role' => 'administrator' ), 'role-2' => array( 'role' => 'user' ), ); foreach($roleDefs as $key => $roleDef) { $role = new Role(); $role->setRole($roleDef['role']); $manager->persist($role); $this->addReference($key, $role); } $manager->flush(); }
I always use the same array scheme. Each element of the array uses the property name (in the underscore notation) of the object as an index. If the entity structure becomes more complex, there are many lines of $entity->setMyProperty($def['my_property']);
.
I think that the problem of matching property names with setter methods is a very common problem in Symfony and Doctrine, since this type of display is found in many situations (for example, displaying forms for entities).
Now I'm wondering if there is a built-in method that can be used for matching. It would be nice to have a solution like
foreach($defs as $key => $def) { $entity = $magicMapper->getEntity('MyBundle:MyEntity', $def);
Does anyone have an idea how this can be achieved?
Thanks a lot, Hacksteak
hacksteak25
source share