我正在使用Datamapper ORM for CodeIgniter我为模型中的字段设置了“序列化”规则和get_rules
“未序列化”规则。此字段将存储序列化数据,当我回溯时,get_rules
将对其进行反序列化。
然而,在调用save()
之后,我正在尝试重新访问该字段,但它仍然返回序列化字符串,而不是数组。
有没有办法重新调用或刷新我的对象,以便再次调用get_rules
并且字段现在返回数组?
这是我的模特:
class User extends DataMapper{
public $validation = array(
'password' => array(
'label' => 'Password',
'rules' => array('encrypt')
),
'preferences' => array(
'rules' => array('serialize'),
'get_rules'=> array('unserialize')
)
);
function __construct($id = NULL)
{
parent::__construct($id);
}
function post_model_init($from_cache = FALSE)
{
}
public function _encrypt($field)
{
if (!empty($this->{$field}))
{
$this->{$field} = md5($this->{$field});
}
}
}
答案 0 :(得分:0)
Datamapper ORM(afaik)仅在实际执行get_rules
时使用get()
。你可以尝试一些事情:
鉴于以下内容
$a = new Fruit();
$a->name = 'grapes';
$a->colors = serialize(array("purple","green"));
$a->save();
$b = new Fruit();
$b->where('id', $a->id)->get();
$colors = $b->colors;
unserialize()
你自己的领域...... $colors = unserialize($a->colors);
get_clone()
//not tested...
$b = $a->get_clone();
$colors = $b->colors;
答案 1 :(得分:0)
此处已修复:https://bitbucket.org/wanwizard/datamapper/commits/db6ad5f2e10650b0c00c8ef9b7176d49a8e85163
从bitbucket获取最新的Datamapper库。