Как отобразить эти данные JSON в цикле foreach? - PullRequest
0 голосов
/ 14 мая 2018

Я использую Laravel для вызова хранимой процедуры в MySQL.Я пытаюсь перебрать возвращаемые данные, но я не могу понять это.Я либо получаю неверный аргумент foreach error, либо html specialchars error. Я не кодирую свой JSON перед отправкой его в представление

Мой вызов БД:

$data = DB::select('CALL sp_MyClientList()');

Если я верну это впредставление

return view('my-view.index', compact('data'));

Я получаю htmlspecial chars error.ОК

, поэтому я использую:

$json = json_encode($data);

, и я получаю этот формат JSON и отправляю его в представление:

return view('my-view.index', compact('json'));

[  {  
"ClientID":24,
"Name":"Client1",
"Balance1":null,
"Balance2":null
},
{  
"ClientID":25,
"Name":"Client2",
"Balance1":24,
"Balance2":0
}]

Как я могу использовать этот цикл для полученияпары ключ-значение внутри?

Я дважды пытался перебрать цикл, но безуспешно

@foreach ($json as $obj)

@for each ($obj as $client)

....

@endforeach

@endforeach

Ответы [ 4 ]

0 голосов
/ 15 мая 2018

Если кому-то нужен ответ на этот вопрос.Я не знаю, правильно ли это, но у меня это сработало.Мне пришлось кодировать, а затем декодировать мой ответ с сервера, а затем получить доступ к массиву.

$data = DB::select('CALL sp_myproc');

$json = js_encode($data, true);
$arr = js_decode($data, true);

 return view('myview.index', compact('arr'));

@foreach ($arr as $client)

{{$client['Name'}}

@endforeach
0 голосов
/ 14 мая 2018

Вы можете использовать JSON Decode

foreach (json_decode($json) as $a)
{
  print_r($a); // this is your area from json response
}

или

foreach ($json as $a)
{
  print_r($a); // this is your area from json response
}
0 голосов
/ 14 мая 2018

В вашем контроллере вы можете создать функцию, которая получает данные и декодирует их в массив следующим образом:

public function retrievingData($yourVariableHere){
    $data='[  {
    "ClientID":24,
"Name":"Client1",
"Balance1":null,
"Balance2":null
},
{
    "ClientID":25,
"Name":"Client2",
"Balance1":24,
"Balance2":0
}]';

    $data=json_decode($data,true);
    return view('myViewFile',[
        'data' => $data
    ]);   
}

Ради примера я жестко закодировал ваш json просто для использования предоставленных вами данных.

В своей функции вы возвращаете декодированный массив блейду, и вы можете отобразить свой результат следующим образом:

@foreach ($data as $row)
    Client Id: {{$row->ClientID}}<br>
    Name : {{$row->Name}}<br>
    Balance1 data: {{$row->Balance1}}<br>
    Balance2 data: {{$row->Balance2}}<br>
@endforeach

Внутри цикла foreach.

0 голосов
/ 14 мая 2018

Структура имеет только один слой.

@foreach($json as $v)
    {{ $v-> ClientID }} - {{ $v->Name }}
@endforeach
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...