Доступ к данным из массива, когда в именах ключей есть пробелы Laravel

avatar
Charles
7 апреля 2018 в 22:09
103
1
0

Я использую API Alpha Vantage и делаю внешний вызов. проблема в том, что ответ возвращается с числовыми значениями, включенными в строку, и мне было интересно, смогу ли я разобрать это, используя laravel 5.2. Мой контроллер и представление ниже вместе с результатами json

    array:2 [▼
  "Meta Data" => array:4 [▼
    "1. Information" => "Monthly Adjusted Prices and Volumes"
    "2. Symbol" => "AAPL"
    "3. Last Refreshed" => "2018-04-06"
    "4. Time Zone" => "US/Eastern"
  ]
  "Monthly Adjusted Time Series" => array:219 [▼
    "2018-04-06" => array:7 [▼
      "1. open" => "167.8800"
      "2. high" => "174.2304"
      "3. low" => "164.4700"
      "4. close" => "168.3800"
      "5. adjusted close" => "168.3800"
      "6. volume" => "164408813"
      "7. dividend amount" => "0.0000"
    ]
    "2018-03-29" => array:7 [▼
      "1. open" => "178.5400"
      "2. high" => "183.5000"
      "3. low" => "164.9400"
      "4. close" => "167.7800"
      "5. adjusted close" => "167.7800"
      "6. volume" => "701387082"
      "7. dividend amount" => "0.0000"
    ]

Представление. Это возвращает ошибку «Попытка получить свойство не-объекта». Я предполагаю, что это из-за числовых значений и пробела перед объектами, которые я пытаюсь объявить

@foreach($re as $Past)
    <tr>
    @foreach($Past as $key)
            <td>
            {{$key->open}}
            </td>
    @endforeach
    </tr>
@endforeach !>

контроллер, в моем контроллере нет ничего особенного, просто простой вызов API с использованием Guzzle

public function Test(){

        $client = new Client(); //GuzzleHttp\Client
        $promise = $client->get('https://www.alphavantage.co/query?function=TIME_SERIES_MONTHLY_ADJUSTED&symbol=AAPL&apikey=DEMOKey');
        $body = $promise->getbody();
        $result = json_decode($body, true);
         return view('pages.test', ['re' => $result]);
} 
Источник

Ответы (1)

avatar
Dimitri Mostrey
8 апреля 2018 в 10:11
0

Ответ на ваш вопрос лежит здесь Eloquent: Сериализация

В ваших моделях добавьте эту строку

$hidden = ['field1', 'field2'];

Эти поля теперь скрыты от ответов json.

Charles
8 апреля 2018 в 23:59
0

Извините, я не верю, что мой заголовок был достаточно ясным, и внес исправления.