Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 29.09.2017 11:22:56

Сохранение JSOn строку без проблем

Делаю сохранение данных. Некоторые данные хранятся как varchar и сохраняются без проблем, а некоторые должны конвертироваться в json - в этом и проблема.
Сохраняется так:

{"news": "{\"add\":null,\"edit\":null,\"delete\":null,\"editMy\":null,\"deleteMy\":null,\"reason\":\"on\",\"premoderator\":\"on\"}", "comments": "{\"add\":\"on\",\"edit\":null,\"delete\":null,\"editMy\":null,\"deleteMy\":null,\"reason\":\"on\",\"premoderator\":null}"}

А нужно так:

{"news": {"add": false, "edit": false, "show": true, "delete": false, "editMy": false, "reason": true, "deleteMy": false, "premoderator": true}, "comments": {"add": true, "edit": false, "show": true, "delete": false, "editMy": false, "reason": true, "deleteMy": false, "premoderator": false}}

Сохраняю многомерный массив:

'site_role' => json_encode([
   'news' => json_encode([
      'add' => $request->newsAdd,
      'edit' => $request->newsEdit,
      'delete' => $request->newsDelete,
      'editMy' => $request->newsEditMy,
      'deleteMy' => $request->newsDeleteMy,
      'reason' => $request->newsReason,
      'premoderator' => $request->newsPremoderator
   ]),
   'comments' => json_encode([
      'add' => $request->commentsAdd,
      'edit' => $request->commentsEdit,
      'delete' => $request->commentsDelete,
      'editMy' => $request->commentsEditMy,
      'deleteMy' => $request->commentsDeleteMy,
      'reason' => $request->commentsReason,
      'premoderator' => $request->commentsPremoderator
      ])
   ])

Как это правильно реализовать, что бы сохранение и вывод был корректный.

PS: вывожу следующим образом:
В модели делаю так:

protected $casts = [
   'site_role' => 'array',
   'moder_role' => 'array',
   'admin_role' => 'array',
];

В самом view:

$role->site_role['news']['editMy']

Не в сети

#2 29.09.2017 12:05:22

Re: Сохранение JSOn строку без проблем

Решено! Ошибка была в том, что я в массиве делал ещё json массив.
Т.е. так правильно:

'site_role' => json_encode([
                'news' => [
                    'show' => $request->newsShow,
                    'add' => $request->newsAdd,
                    'edit' => $request->newsEdit,
                    'delete' => $request->newsDelete,
                    'editMy' => $request->newsEditMy,
                    'deleteMy' => $request->newsDeleteMy,
                    'reason' => $request->newsReason,
                    'premoderator' => $request->newsPremoderator
                ],
                'comments' => [
                    'show' => $request->commentsShow,
                    'add' => $request->commentsAdd,
                    'edit' => $request->commentsEdit,
                    'delete' => $request->commentsDelete,
                    'editMy' => $request->commentsEditMy,
                    'deleteMy' => $request->commentsDeleteMy,
                    'reason' => $request->commentsReason,
                    'premoderator' => $request->commentsPremoderator
                ]
            ]),

Не в сети

Подвал раздела