Yii2加载方法后如何修改模型属性?(如后发现法)

Yii2加载方法后如何修改模型属性?(如后发现法),yii2,Yii2,我有一个模型的属性,从数据库加载后应该修改它 我可以扩展afterFind方法,它可以将varchar值转换为php数组。所以它是有效的 但是当加载模型时,我不知道如何将varchar转换为php数组 我尝试过规则,但不起作用: [['languages'], 'each', 'rule' => ['string']], 还是这个 [['languages'], 'safe'], 所以这一个在发现后起作用: public function afterFind() { $this

我有一个模型的属性,从数据库加载后应该修改它

我可以扩展afterFind方法,它可以将varchar值转换为php数组。所以它是有效的

但是当加载模型时,我不知道如何将varchar转换为php数组

我尝试过规则,但不起作用:

[['languages'], 'each', 'rule' => ['string']],
还是这个

[['languages'], 'safe'],
所以这一个在发现后起作用:

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

顺便说一句,我曾尝试在本次对话中扩展init\uu构造函数方法,但没有成功,在load方法之后,languages属性仍然是字符串而不是php数组。

如果我理解您的问题,我认为您可以在模型中使用一个属性:

public class Model {

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

     }

}
然后,使用它:

$arr = $model->languagesArray;

为什么没有
afterLoad
事件,阅读整个线程可能会有一些想法