我该怎么做呢?当我从我的数据库中获取模型时,我想序列化和反序列化一个 JSON 字符串,这样我就可以直接访问 stdObject 而不必每次都自己反序列化它。
问问题
2470 次
2 回答
4
我相信您可以将其添加到您的模型中,并更改爆炸/内爆以适合您的序列化/反序列化问题:
内爆/爆炸:
protected function afterFind() {
parent::afterFind();
if($this->hasAttribute('types'))
$this->types = explode('|', $this->types);
return $this;
}
protected function beforeSave() {
parent::beforeSave();
if($this->hasAttribute('types'))
$this->types = implode('|', $this->types);
return $this;
}
if
如果数据库中缺少该字段(不太可能),或者您在基本模型中使用此代码(因为某些模型可能没有此字段),该语句只是一个故障保护。在大多数情况下,排除此检查是安全的。
JSON:
protected function afterFind() {
$this->types = json_decode($this->types);
return parent::afterFind();
}
protected function beforeSave() {
$this->types = json_encode($this->types);
return parent::beforeSave();
}
于 2013-04-16T06:00:56.803 回答
3
您也可以使用 getter/setter。假设我们的 DB 列名为jsonData
. 然后你可以写
public function getData()
{
return json_decode($this->jsonData);
}
public function setData($value)
{
$this->jsonData = json_encode($value);
}
data
然后可以像常规属性一样使用。
于 2013-04-16T16:44:19.120 回答