Сопоставить массив с сущностью в Symfony2 / Doctrine2

Я использую пакет DoctrineFixtures для создания примеров сущностей во время разработки. В моем методе load () приспособлений ORM я определяю данные как ассоциативные массивы и создаю объект сущности в цикле.

<?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();
}

Я всегда использую одну и ту же схему массива. Каждый элемент массива использует имя свойства (в нотации подчеркивания) объекта в качестве индекса. Если структура сущности становится более сложной, появляется много строк $ entity-> setMyProperty ($ def ['my_property']); .

Я думаю, что проблема сопоставления имен свойств с методами установки - очень распространенная проблема в Symfony и Doctrine, поскольку этот тип сопоставления встречается во многих ситуациях (например, сопоставление форм с сущностями).

Теперь мне интересно, есть ли встроенный метод, который можно использовать для сопоставления. Было бы неплохо иметь такое решение, как

foreach($defs as $key => $def) {
   $entity = $magicMapper->getEntity('MyBundle:MyEntity', $def);
   // ...
}

Есть ли у кого-нибудь идеи, как этого можно достичь?

Большое спасибо, Hacksteak

7
задан hacksteak25 10 December 2011 в 13:08
поделиться