2012-09-13 70 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; 
} 
相關問題