动态创建Doctrine记录对象 - Symfony 1.4

时间:2011-06-17 10:03:12

标签: php doctrine symfony-1.4

我已经快速搜索到找到答案,但老实说,我甚至不能100%搜索搜索内容。

这是一个优化问题,而不是实际问题,但我可以帮助。

在我的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

如果我做不到那么那很好但是如果可能的话会很酷。

干杯。

1 个答案:

答案 0 :(得分:1)

你可以尝试一个简单的:

if(!$object)
{
    $object = new $table();
    $object->set($field, $value);
}