如何在Yi2中用json保存模型?

如何在Yi2中用json保存模型?,json,model,yii2,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']; 但我不能。我不知道我该怎么做才好

我有一个模型如下:

$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


有人能帮我解决这个问题吗?

json\u decode默认情况下将数据转换为StdObject。如果要使用数组而不是对象,则应将assoc参数设置为true

如果json为空,则必须配置[fields][1]方法以更正数据导出。例如:

class Book extends ActiveRecord
{
    // some code

    public function fields()
    {
        return [
            'id',
            // others attributes of Book model
        ];
    }
}

默认情况下,json_decode将数据转换为StdObject。如果要使用数组而不是对象,则应将assoc参数设置为true

如果json为空,则必须配置[fields][1]方法以更正数据导出。例如:

class Book extends ActiveRecord
{
    // some code

    public function fields()
    {
        return [
            'id',
            // others attributes of Book model
        ];
    }
}

谢谢你的回答。我想将所有模型保存为数据库中的json或字符串,然后检索它并再次用作模型。所以我通过序列化解决了这个问题


谢谢你的回答。我想将所有模型保存为数据库中的json或字符串,然后检索它并再次用作模型。所以我通过序列化解决了这个问题

试试这个:

$book = \backend\models\Book::find()->asArray()->all();
$json = json_encode($book);
$data = json_decode($json, true);
print_r($data[0]['ID']);
查询时添加->asArray

尝试以下操作:

$book = \backend\models\Book::find()->asArray()->all();
$json = json_encode($book);
$data = json_decode($json, true);
print_r($data[0]['ID']);

查询时添加->asArray

请将json附加到问题。请将json附加到问题。谢谢您的回答。但它不起作用,因为当我使用$json=json_encode$book;然后dievar_dump$hs返回一些空数组:D:\Project Files\Git\SAME\backend\controllers\NewRequestController.php:60:string'[{},{},{},{},{},{},{},{},{},{},{},{}长度=34。问题在于将模型编码为json。谢谢您的回答。但它不起作用,因为当我使用$json=json_encode$book;然后dievar_dump$hs返回一些空数组:D:\Project Files\Git\SAME\backend\controllers\NewRequestController.php:60:string'[{},{},{},{},{},{},{},{},{},{},{},{}长度=34。问题在于将模型编码为json。