2016-07-30 6 views
1

ich einige JSON-Daten in einem Feld von meinem DB gespeichert haben, um die Daten in einer Ansicht angezeigt werden, schrieb ich diese Abfrage in meinem ControllerJSON-Daten und Laravel Ansicht

$gallerie = Articolo::select('nome_gal') 
        ->where('nome_gal','LIKE','%nome_gal%') 
        ->orderBy('created_at', 'desc') 
        ->orderBy('updated_at', 'desc') 
        ->take(6) 
        ->get(); 

In der Steuerung gebe ich dass Abfrage und andere Anfragen, zu einer Ansicht auf diese Weise

return view('articoli')->with(array('articoli' => $articoli, 'gallerie'=>$gallerie, 'categorie'=> $categorie, 'trevideo'=>$trevideo, 'treaudio'=>$treaudio)); 

in der Seitenleiste Abschnitt der Ansicht habe ich diesen Code:

<div class="sidebar-item popular"> 
    <h3>Ultime foto</h3> 
    <ul class="gallery"> 
     @foreach(json_decode($gallerie, true) as $galleria) 
      <li>{{ $galleria['cover_gal'] }}</li> 
     @endforeach 
    </ul> 
</div> 

Nun, als ich versuche, die Seite zu laden, sehe ich keinen Code unter der <ul class="gallery">.

Die Struktur der JSON-Daten dies http://p4c.it/alfa.json

In Anbetracht, dass json_decode eine Zeichenfolge muss, meiner Meinung nach ist es etwas falsch in dem Steuerteil. Hast du irgendwelche Vorschläge?

+1

du so

  • versucht haben {{galleria- $> cover_gal}}
  • jonju

    +0

    cover_gal Teil des JSON Daten. Die Struktur der JSON-Daten ist dies http://p4c.it/alfa.json – user1441917

    +0

    Überprüfen Sie zuerst die Abfrage-Ausgabe, ich denke, Ihre Abfrage ist falsch, in der "Like" -Klausel haben Sie den Spaltennamen angegeben (% nome_gal%) , – Aparna

    Antwort

    0

    Gut, das ist, was ich tat und es funktionierte für mich, im Folgenden alles rekapitulieren, so dass die Lösung vollständig ist für die neuen Leser.Im Modell der Tabelle I wie so eine imaginäre Attribut definiert:

    protected $appends=['att1','att2','att3', 'att4', 'nome_galla'];

    und offensichtlich

    public function getNomeGallaAttribute() { $json = $this -> attributes['nome_gal']; return json_decode($json, true); }

    in der Steuerung habe ich die Abfrage:

    $gallerie = Articolo::select('nome_gal')->where('nome_gal','LIKE','%nome_gal%')->orderBy('created_at', 'desc')->orderBy('updated_at', 'desc')->take(6)->get();

    und natürlich die Passage zur Ansicht:

    return view('articoli')->with(array('articoli' => $articoli, 'gallerie'=>$gallerie, 'categorie'=> $categorie, 'trevideo'=>$trevideo, 'treaudio'=>$treaudio));

    schließlich in der Ansicht, ich auf diese Weise gelöst:

    <div class="sidebar-item popular"> <h3>Ultime foto</h3> <ul class="gallery"> @foreach($gallerie as $galleria) <li><a href="#"><img src="gallerie/{{$galleria['nome_galla']['nome_della_gal'] }}/img_rid/{{$galleria['nome_galla']['cover_gal'] }}" alt=""></a></li> @endforeach </ul> </div>

    aus irgendeinem Grund die reguläre Syntax

    {{asset("gallerie/$galleria['nome_galla']['nome_della_gal']/img_rid/$galleria['nome_galla']['cover_gal']")}}

    nicht haben gearbeitet ich (weiße Seite des Todes als Ergebnis).

    Vielen Dank an alle für den Beitrag, ich weiß, php, aber ich bin neu in Laravel :-)

    1

    Sieht aus wie Ihre JSON-Daten hat bestimmte Frage: Wenn Sie id_foto 'unter Berücksichtigung & 'nome_foto' ein Paar, dann ist es

    "galleria":[ 
          {"id_foto": "1","nome_foto": "DSC_0006.JPG"}, 
          {"id_foto": "2","nome_foto": "DSC_0017.JPG"} 
          ] 
    

    statt

    "galleria":[{ 
          "id_foto": "1", 
          "nome_foto": "DSC_0006.JPG", 
          "id_foto": "2", 
          "nome_foto": "DSC_0017.JPG", 
          "id_foto": "3" 
          }] 
    

    , weil, wenn wir sein sollten json_decode() Ihre JSON-Daten erhalten wir nur die letzte 'ID_Foto' & 'Nome_foto' wie

    [galleria] => Array ([0] => Array ([id_foto] => 24 [nome_foto] => foto_9.jpg)) 
    

    , die ich denke, falsch ist und überprüfen Sie die bearbeitete Ansicht Code

    -Controller

    return view('articoli')->with(array('articoli' => $articoli, 
    'gallerie'=>json_decode($gallerie,true), 'categorie'=> $categorie, 
    'trevideo'=>$trevideo, 'treaudio'=>$treaudio)); 
    

    View [EDITED]

    <div class="sidebar-item popular"> 
        <h3>Ultime foto</h3> 
        <ul class="gallery"> 
         @foreach($gallerie['galleria'] as $galleria=>$gal) 
          <li>{{{$gal['id_foto']}}} <br> {{{$gal['nome_foto']}}}</li> 
         @endforeach 
        </ul> 
    </div> 
    

    Und die Schlüssel für den Zugriff auf nome_gal & cover_gal

    $gallerie['nome_gal'] 
    $gallerie['cover_gal'] 
    
    +0

    die ganze Seite ist weiß :(Ich vermutete, dass die JSON-Daten nicht gültig waren, aber wenn ich versuche, es in eine Testroute zu laden, funktioniert alles gut. $ Gallerie = \ App \ Articolo :: select ('nome_gal' , 'id_articolo') -> where ('nome_gal', 'LIKE', '% nome_gal%') -> orderBy ('erstellt_at', 'desc') -> orderBy ('aktualisiert_at', 'desc') -> take (34) -> get();.. foreach ($ gallerie wie $ galleria) { $ galla = json_decode ($ galleria [ 'nome_gal'], true); echo '

    ' $ galleria-> id_articolo‘ - '. $ galla [' cover_gal '].' - '. $ galla [' nome_gal '].'

    '; } ' – user1441917

    +0

    können Sie mir zeigen Ihre tatsächlichen JSON-Daten? – jonju

    +0

    ja, hier ist es http://p4c.it/alfa.json – user1441917

    0

    Ihr JSON hat denselben Namen innerhalb Galleria Array, so dass es nur den letzten Wert nehmen wird. stattdessen können Sie als

    verwenden
    { 
        "nome_gal": "just a name", 
        "cover_gal": "DSC_0017.JPG", 
        "galleria": [{ 
         "id_foto1": 1, 
         "nome_foto1": "DSC_0006.JPG", 
         "id_foto2": 2, 
         "nome_foto2": "DSC_0017.JPG", 
         "id_foto3": 3, 
         "nome_foto3": "DSC_0018.JPG" 
        }] 
    } 
    

    Hier ist Ihre json dekodiert Array

    Array 
    (
        [nome_gal] => just a name 
        [cover_gal] => DSC_0017.JPG 
        [galleria] => Array 
         (
          [0] => Array 
           (
            [id_foto] => 24 
            [nome_foto] => foto_9.jpg 
           ) 
    
         ) 
    
    ) 
    
    +0

    Tatsächlich war es eines der Probleme, die ich http://p4c.it/gamma.json korrigiert habe. Wie auch immer, ich versuche auf cover_gal not galleria zuzugreifen. Ich habe auch versucht, meine Json zu vereinfachen, die Array-Teil aber ohne Erfolg zu beseitigen. In diesem Moment suche ich nach einem Arbeitsbeispiel von json, das zu einer Ansicht weitergegeben wurde – user1441917

    Verwandte Themen