如何在yii2中的json中保存模型?

时间:2018-12-13 10:33:46

标签: json model yii2

我有一个如下模型:

$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吗?

有人可以帮助我解决这个问题吗?

3 个答案:

答案 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'];