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.

Versuchen $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

Schreibe einen Kommentar