2017-05-09 38 views
2

我有一個模型的屬性,它應該從數據庫中加載後進行修改。Yii2加載方法後如何修改模型屬性? (如afterFind方法)

我可以擴展afterFind方法,它可以將varchar值轉換爲php數組。所以它可以找到。

但是,該模型被加載時,我不知道如何到VARCHAR轉換爲PHP數組。

我與規則嘗試,但沒有作品:

[['languages'], 'each', 'rule' => ['string']], 

或這一個

[['languages'], 'safe'], 

所以這一個工程一個afterFind:

public function afterFind() 
{ 
    $this->languages = $this->convertToPHPArray($this->languages); 
    parent::afterFind(); 
} 

通過我都試過的方式擴展init__constru構造函數方法與這次談話,但沒有成功,之後負載方法的語言屬性仍然是一個字符串,而不是一個PHP數組。

+0

爲什麼沒有一個'afterLoad'事件[yii2/issues/4615](https://github.com/yiisoft/yii2/issues/4615),閱讀整個主題可能會提供一些想法 – Alex

回答

1

如果我明白你的問題,我認爲你可以在模型中使用的屬性:

public class Model { 

     public function getLanguagesArray() 
    { 
      return $this->convertToPHPArray($this->languages); 

    } 

} 

然後,使用它:

$arr = $model->languagesArray; 
相關問題