Как сохранить модель в json в yii2? - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть модель, подобная follow:

$book = \backend\models\Book::find()->all();

, тогда я могу получить доступ к специальному значению столбца с помощью оператора follow:

$ID = $book[0]['ID'];

Теперь я хочу преобразовать эту модель в Json исохраните его в БД.поэтому я написал ниже код:

$json = json_encode($book);

тогда я хочу загрузить и декодировать его.

$object = json_decode($json) ;
$ID = $object[0]['ID'];

но я не могу.Я не знаю, что мне делать для этого.возможно ли преобразовать модель в json?

Может кто-нибудь помочь мне решить эту проблему?

Ответы [ 3 ]

0 голосов
/ 13 декабря 2018

спасибо за все ответы.Я хотел сохранить всю модель как json или строку в БД, а затем извлечь ее и снова использовать в качестве модели.поэтому я решил эту проблему с помощью serialize()

$book = \backend\models\Book::find()->all();
$str = serialize($book);
$object = unserialize($str);
$ID = $object[0]['ID'];
0 голосов
/ 17 декабря 2018

Попробуйте:

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

Добавить ->asArray() при запросе

0 голосов
/ 13 декабря 2018

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
        ];
    }
}
...