我可以用Crypt
来加密/解密我的数据.我想加密数据库中的一些信息(例如姓名、邮箱、电话号码等).
假设我希望所有内容都被加密,我希望能够在后台自己完成这项工作,我可以通过覆盖create
和save
函数来完成:
// For instance, the save() function could become
public function save(array $options = array())
{
foreach ($this->attributes as $key => $value)
{
if (isset($value)) $this->attributes[$key] = Crypt::encrypt($value);
}
return parent::save($options);
}
现在,我希望以同样的方式执行解密,这样当我说User::find($id)
时,返回的$user
已经被解密.还有其他功能,如firstOrFail()
get()
first()
和all也可以工作.
我还希望在使用关系时扩展此功能(所以User::with('someOtherTable')->find($id)
也可以).
这可能吗?如果这是不可能的,我正在考虑创建一个助手函数decyrpt()
function decrypt($array)
{
if (!is_array($array)) return Crypt::decrypt($array);
$result = [];
foreach($array as $key => $value) $result[$key] = decrypt($value);
return $result;
}
先把我所有的结果都传递给大家,然后开始使用它们,但如果Laravel能提供这个,或者有一种"Laravel方法"能做到这一点,那就更好了.