7
我使用DoctrineFixtures捆綁發展過程中創造的實體例子。在我的ORM fixtures load()方法中,我將數據定義爲關聯數組,並在循環中創建實體對象。地圖數組中的Symfony2/Doctrine2實體
<?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']);
行。
我認爲映射propertynames到setter方法的問題是在Symfony和學說很常見的問題,因爲這類型的映射在許多情況下被發現(例如,映射形式實體)。
現在我想知道是否有可用於映射一個內置的方法。這將是不錯的有像
foreach($defs as $key => $def) {
$entity = $magicMapper->getEntity('MyBundle:MyEntity', $def);
// ...
}
一個解決方案的人知道如何可以做到這一點?
非常感謝, Hacksteak
我現在在en外部類中使用了一些修改(支持下劃線和加法)的解決方案。 – hacksteak25
我之前看到過這個解決方案,但我認爲可以更靈活地解決這個問題。內部氫化物如何? –
我一定會對聽到更靈活的解決方案感興趣,所以我都是耳朵! –