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