Active Record 某字段数据解密 [ 求助交流 ]
RT 现在需要在查询、存储记录时,对某字段进行加解密
加密好说,直接重写save方法就可以了。 例如:
$user = new dao\User();
$user->name = 'test';
$user->save();
public function save()
{
$this->__set('name', Encrypt::encryptData($this->__get('name')))
parent::save();
}
而解密现在不知道如何去做。在yii1中,我可以直接重写afterFind方法,改写User类的成员变量name值,例如
echo $user->name; //我希望此处直接是解密好的,yii1可以重写下面的方法做到
public function afterFind()
{
$this->__set('name', Encrypt::decryptData($this->__get('name')));
}
请教大家,到了yii2,如何做才能实现上述功能?
共 3 条回复
-
liangkaixin 回复于 2018-08-10 14:26 举报
我只知道插入的话可以在模型中写
public function behaviors(){return [ [ 'class' => AttributeBehavior::className(), 'attributes' => [ ActiveRecord::EVENT_BEFORE_INSERT => 'name', ], 'value' => function ($event) { return md5($this->name); }, ], ]; }
共 2 条回复liangkaixin 回复于 2018-08-10 14:32 回复ActiveRecord::EVENT_AFTER_FIND
renzhengchi 回复于 2018-08-12 12:59 回复@liangkaixin behaviors确实没研究过 我研究下,有结论或问题再回复你^ ^
-
wang78699425 回复于 2018-08-21 17:53 举报
新增、修改的时候beforeSave事件了解一下;查询的时候模型内的fields方法了解一下。
renzhengchi
注册时间:2018-08-07
最后登录:2023-12-27
在线时长:0小时44分
最后登录:2023-12-27
在线时长:0小时44分
- 粉丝0
- 金钱15
- 威望0
- 积分15