Laravel 4 - das Dekodieren von json in Sicht
Habe ich seit kurzem das Experimentieren mit Laravel 4, das bisher eine zu verwenden Freude. Ich bin jedoch ein Problem Auftritt, nicht mit Laravel 4, sondern eher mein eigenes Unvermögen.
Ich habe eine Datenbank mit 3 Zeilen mit 4 Spalten. Zum Beispiel, können sagen, dass die Spalten sind:
content_id,
content_type,
content_data,
timestamp
Den 'content_data' Spalte enthält ein JSON-kodiertes array von rund 4 Schlüssel-Wert-Paare.
Wenn ich wieder an diese Zeilen aus der Datenbank (mit Eloquent), und übergeben Sie die Daten in meine Ansicht, wie kann ich auch Parsen der JSON-in meine blade template?
Nach der Suche und auf der Laravel Dokumentation mein Gedanke ist, dass können Sie nicht, also versuchte ich zum decodieren des JSON zurück in ein array in meinem controller, und dann übergeben Sie in meine anzeigen.
Bisher habe ich versucht, das folgende in meiner Klasse:
<?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);
}
}
Aber in meinem Blade Vorlage, wenn ich eine foreach-Schleife, um durch die extrahierten Zeilen, ich habe versucht, läuft eine weitere foreach-Schleife innerhalb der ersten ein, die loops durch das $items-array zu extrahieren, Ihrer Werte, sondern weil es eine Schleife in einer Schleife, bekomme ich doppelte json-Werte.
Meine Klinge template sieht wie folgt aus:
@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
Nicht sicher, ob ich bereits erklärt habe ist es richtig, aber im Grunde will ich nur in der Lage sein zu analysieren, meine json-kodiertes array innerhalb der Schleife, zeigt die extrahierten db-Zeilen
Ich hoffe, das macht Sinn, jemand, der helfen kann.
$content->content_data = json_decode($content->content_data)
.Also du meinst, führen Sie die foreach-Schleife in meinem controller, aber anstelle von zuweisen der json_decoded-Werte in einem $items-array, sollte ich zuweisen $Inhalte->content_data?
Ich würde versuchen, nicht sicher, was das Problem ist.
Danke für den Versuch, aber es hat nicht funktioniert. Es ruft nur die Letzte Zeile ist $data_content Spalte, also, warum ich es in ein array.
InformationsquelleAutor Goonyan Harir | 2014-01-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie ein Eloquent Accessor an wandeln Sie Ihre Daten wie Sie es brauchen.
Können Sie rufen dann Ihre Spalte über
$content->content_data
wie gewohnt, aber es wird konvertiert in ein array.Können Sie die inverse beim speichern von Daten, die Spalte durch die Umwandlung der übergebenen array in einen JSON-kodierten string, auch wenn die Verwendung von mutator.
json_encode
.Vielen Dank an alle Mitwirkenden.InformationsquelleAutor Aken Roberts