2012-09-13 105 views
0

是否有一种方法可以使用Doctrine 2.x从实例化模型内部的DB加载数据?从模型实例中的数据库加载数据

实现在load()方法:

$model = new Model(); 
$model->load($params); 

$param = array与密钥=>值对将被用于在DB查找数据,EX:$param = array('id' => 1)

find()Doctrine\ORM\EntityManager方法不允许传递实例,我找不到其他任何东西。

+0

请再具体些。什么是'$ params',一个数组?什么是负载,用原始数据选择模型?如果你只是想用数据库中的数据来刷新你的实体,那么你的代码应该放在一个扩展了'EntityRepository'的定制库中。您从实体管理器获取存储库,将您现有的实体传递给像'refreshModel($ model)'这样的方法,该方法从数据库中获取数据并更新实体并将其返回。 – dbrumann

+0

我已更新问题。我不想更新这个模型,我需要使用它的方法('load()')将原始数据从数据库加载到现有对象实例。 – xyz

回答

0

不幸的是,在实例化对象中加载数据是不可能的。

解决方法的方法是:

public function load($id = 0) 
{ 
    $resultObject = $this->_getEntityManager()->find(get_class($this), $id); 

    if ($resultObject) { 
     foreach (get_object_vars($resultObject) as $key => $val) 
     { 
      $this->$key = $val; 
     } 

     unset($resultObject); 
    } 

    return $this; 
} 
相关问题