我该怎么做呢?我想从我的数据库中获取模型时序列化和反序列化JSON字符串,这样我就可以直接访问stdObject,而不必每次都自己反序列化。
答案 0 :(得分:3)
我相信您可以将其添加到您的模型中,并更改爆炸/内爆以适合您的序列化/反序列化问题:
<强>内爆/爆炸:强>
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();
}
答案 1 :(得分:3)
您也可以使用getter / setter。假设我们的数据库列名为jsonData
。然后你可以写
public function getData()
{
return json_decode($this->jsonData);
}
public function setData($value)
{
$this->jsonData = json_encode($value);
}
然后可以像常规属性一样使用 data
。