Я недавно экспериментировал с Laravel 4, который до сих пор был радостью в использовании. Тем не менее, я испытываю проблему, а не с Laravel 4, а скорее свою собственную неспособность.Laravel 4 - декодирование json в поле зрения
У меня есть база данных, содержащая 3 строки с 4 столбцами. Например, предположим, что столбцы:
content_id, content_type, content_data, метка времени
'content_data' столбец содержит JSON-кодированный массив около 4 ключевых пар значений.
Когда я извлекаю эти строки из базы данных (используя Eloquent) и передаю данные в свое представление, как я также могу разобрать JSON в свой шаблон клинка?
После поиска и ссылки на документацию Laravel, моя мысль заключается в том, что вы не можете, поэтому я попытался декодировать JSON обратно в массив внутри моего контроллера, а затем передать его в мое представление.
До сих пор я попытался следующим в моем классе:
<?php
class PageController extends \BaseController {
public function index()
{
$data = Content::
->where('content_type', 1)
->get();
foreach($data as $content)
{
$items[] = json_decode($content->content_data);
}
return View::make('pages.page2')
->with('data', $data)
->with('items', $items);
}
}
Однако в моем шаблоне лезвию, когда я запускаю цикл Еогеаспа цикла по извлекаемым строкам, я попытался запустить еще один цикл Еогеаспа в первый, который перебирает массив $ items для извлечения их значений, но поскольку это цикл в цикле, я получаю повторяющиеся значения json.
Мой шаблон лезвие выглядит следующим образом:
@extends('layouts.pages');
@section('content_body')
<h1>My <span>title</span></h1>
<div class="column col-1">
<ul>
{{-- loop through the database rows --}}
@foreach($data as $row)
{{-- loop through the json decoded values --}}
@foreach($items as $item)
{{ $item['title'] }}
@endforeach
@endforeach
</ul>
</div>
@stop
Не уверен, что, если я объяснил это правильно, но в основном я просто хочу, чтобы иметь возможность разобрать мой JSON закодированный массив в цикле, который отображает извлеченную дБ строки
Надеюсь, это имеет смысл для тех, кто может помочь.
Попробуйте '$ content-> content_data = json_decode ($ content-> content_data)'. – elclanrs
Итак, вы имеете в виду выполнение цикла foreach в моем контроллере, но вместо назначения json_decoded значений в массив $ items, я должен назначить его $ content-> content_data? –
Я бы попробовал, не знаю, в чем проблема. – elclanrs