2012-07-06 71 views
0

嗨,兄弟,我有一個問題。 我有以下代碼:從實體類訪問存儲庫

/** 
* Callback transform array of checkboxes to string and store it in database 
* 
* @ORM\PrePersist() 
* @ORM\PreUpdate() 
*/ 
public function onPreUpdate() 
{ 
    if($this->id == 13) 
    { 
     $data = implode('-', $this->value); 
     $this->setValue($data); 
    } 
} 

/** 
* Callback retrieved data from database transform to string to fill our field 
* 
* @ORM\PostLoad() 
*/ 
public function onPostLoad() 
{ 
    if($this->id == 13) 
    { 
     $data = (strstr($this->value, '-') !== false) ? explode('-', $this->value) : array($this->value); 
     $this->setValue($data); 
    } 
} 

我必須這樣做,以變換字符串複選框的數組當我添加/更新數據,反之亦然,當我從數據庫中檢索數據,把它們放在複選框部件。 但現在是靜態的就是通過ID,我需要檢查自己的輸入類型,如果它是運行上面的代碼的複選框... 我不能做到這一點:

$this->getDoctrine()->getRepository(); 

在我的實體類,因爲這是行不通的,對於數據映射器來說這不是個好主意......所以我該怎麼做呢?

感謝我的英文不好

回答

0

所有答覆,對不起,如果你想轉換數據,而之前或數據庫後,那麼你可以使用Symfony2的學說堅持Data Transformer

+0

NVM不是編程 的好方法! 現在我知道該怎麼做了!我不知道從另一個proporerty檢索數據時它與其他實體類有關係,所以我可以在我的實體中訪問它: '$ options-> getWidget()' – marcio 2012-07-06 19:47:55