Laravel как убрать косую черту при выборе поля json из базы данных с помощью querybuilder - PullRequest
0 голосов
/ 24 февраля 2020

По сути, в моей базе данных есть поле json, которое является допустимым json форматом. Когда я вставляю поле json в средство просмотра json, я получаю что-то вроде

"priceByBlock":[
      {
         "maxArea":6049,
         "minPrice":"$4,455,000",
         "unitNum":102,
         "maxPrice":"$35,000,000",
         "type":"Block 86",
         "minArea":1313
      },
      {
         "maxArea":5683,
         "minPrice":"$9,922,000",
         "unitNum":52,
         "maxPrice":"$33,000,000",
         "type":"Block 88",
         "minArea":2756
      }
   ],
   "priceByBedroom":[
      {
         "maxArea":6049,
         "minPrice":"$33,000,000",
         "unitNum":4,
         "maxPrice":"$35,000,000",
         "type":null,
         "minArea":5673
      },

Но когда я делаю такой запрос, основанный на laravel документах ->select('xp_ecoprop_summary.json->priceByBlock')

Я получил что-то вроде

"json_unquote(json_extract(`xp_ecoprop_summary`.`json`, '$.\"priceByBlock\"'))": "[{\"type\": \"Block 
39\", \"maxArea\": 3003, \"minArea\": 614, \"unitNum\": 24, \"maxPrice\": \"$6,777,000\", \"minPrice\": \"$1,147,000\"}, {\"type\": \"Block 41\", \"maxArea\": 2842, \"minArea\": 614, \"unitNum\": 24, 
\"maxPrice\": \"$6,233,382\", \"minPrice\": \"$1,252,050\"}, {\"type\": \"Block 43\", \"maxArea\": 3003, 
\"minArea\": 614, \"unitNum\": 22, \"maxPrice\": \"$7,390,000\", \"minPrice\": \"$1,218,000\"}, 
{\"type\": \"Block 45\", \"maxArea\": 2842, \"minArea\": 614, \"unitNum\": 24, \"maxPrice\": 
\"$7,197,000\", \"minPrice\": \"$1,174,000\"}, {\"type\": \"Block 47\", \"maxArea\": 2325, \"minArea\": 
1539, \"unitNum\": 15, \"maxPrice\": \"$4,631,000\", \"minPrice\": \"$2,609,200\"}]"

Я просто хочу вернуть свой json точно так же, как сделал формат, чтобы я мог использовать его для l oop в моих таблицах, таких как foreach price in priceByBlock затем price.maxArea, price.minPrice и так далее.

Ответы [ 2 ]

1 голос
/ 24 февраля 2020

Чтобы решить эту проблему. Вы можете сохранить свои данные как

json_encode($yourdata, JSON_UNESCAPED_SLASHES);

https://www.php.net/manual/en/function.json-encode.php

0 голосов
/ 24 февраля 2020

Juste заменяет анти-слэш ничем

<?php
    $string = "json_unquote(json_extract(`xp_ecoprop_summary`.`json`, '$.\"priceByBlock\"'))": "[{\"type\": \"Block 
    39\", \"maxArea\": 3003, \"minArea\": 614, \"unitNum\": 24, \"maxPrice\": \"$6,777,000\", \"minPrice\": \"$1,147,000\"}, {\"type\": \"Block 41\", \"maxArea\": 2842, \"minArea\": 614, \"unitNum\": 24, 
    \"maxPrice\": \"$6,233,382\", \"minPrice\": \"$1,252,050\"}, {\"type\": \"Block 43\", \"maxArea\": 3003, 
    \"minArea\": 614, \"unitNum\": 22, \"maxPrice\": \"$7,390,000\", \"minPrice\": \"$1,218,000\"}, 
    {\"type\": \"Block 45\", \"maxArea\": 2842, \"minArea\": 614, \"unitNum\": 24, \"maxPrice\": 
    \"$7,197,000\", \"minPrice\": \"$1,174,000\"}, {\"type\": \"Block 47\", \"maxArea\": 2325, \"minArea\": 
    1539, \"unitNum\": 15, \"maxPrice\": \"$4,631,000\", \"minPrice\": \"$2,609,200\"}]"

    echo str_replace("\", "", $string);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...