Я использую пакет 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