我有一个如下模型:
$book = \backend\models\Book::find()->all();
然后我可以通过以下语句访问特殊的列值:
$ID = $book[0]['ID'];
现在,我想将此模型转换为Json并将其保存在DB中。因此,我写了下面的代码:
$json = json_encode($book);
然后我要加载并解码它。
$object = json_decode($json) ;
$ID = $object[0]['ID'];
但是我不能。我不知道该怎么做。有可能将模型转换为json吗?
有人可以帮助我解决这个问题吗?
答案 0 :(得分:2)
json_decode默认将数据转换为StdObject。如果要使用数组而不是对象,则应将assoc
参数设置为true
$object = json_decode($json, true) ;
$ID = $object[0]['ID'];
如果您的json为空,则必须配置[fields][1]
方法以更正数据导出。例如:
class Book extends ActiveRecord
{
// some code
public function fields()
{
return [
'id',
// others attributes of Book model
];
}
}
答案 1 :(得分:1)
尝试一下:
Length 10 1
Batch 0 [1 2 3 4 5 6 7 8 9 10]
Batch 1 []
查询时添加$book = \backend\models\Book::find()->asArray()->all();
$json = json_encode($book);
$data = json_decode($json, true);
print_r($data[0]['ID']);
答案 2 :(得分:0)
感谢所有答案。我想将所有模型保存为json或字符串在数据库中,然后检索它并再次用作模型。所以我已经通过serialize()
$book = \backend\models\Book::find()->all();
$str = serialize($book);
$object = unserialize($str);
$ID = $object[0]['ID'];