我已經有了一個快速搜索來找到這個答案,但老實說,我甚至沒有100%的搜索。動態創建Doctrine記錄對象 - Symfony 1.4
這是一個比實際問題更多的優化問題,但我可以做的幫助。
在我的Symfony 1.4項目中,我創建了一些方法,以「獲取或創建對象」,例如:
protected function getOrCreateManufacturer($name)
{
$manufacturer = ManufacturerTable::getInstance()->findOneBy('name', $name);
if(!$manufacturer)
{
$manufacturer = new Manufacturer();
$manufacturer->setName($name);
}
return $manufacturer;
}
我有幾個的,這些不同的對象所有的做同樣的事情。我想創建一個可以代替很多代碼的這些方法中的方法,使他們都可以調用它像這樣:
protected function getOrCreateManufacturer($name)
{
return $this->getOrCreateObject('Manufacturer', 'name', $name);
}
protected function getOrCreateObject($table, $field, $value)
{
$object = Doctrine::getTable($table)->findOneBy($field, $value);
if(!$object)
{
// create object here
$object->set($field, $value);
}
return $object;
}
但我似乎無法找出我怎麼能創建一個實例我的對象。
我試圖創建的對象全部擴展爲sfDoctrineRecord
。
如果我不能這樣做,那很好,但它可能會很酷。
乾杯。
47分鐘後,我想通了。 你可以在參數`$ table`上調用`new`並創建該對象。魔法。 – noShowP 2011-06-17 10:51:57