2016-04-28 9 views
0

Ich habe eine Anwendung in Laravel 5.1, erlaubt meine Anwendung den Benutzer einen Artikel hinzufügen und wählen Sie eine Reihe von Kategorien zu diesem Artikel zugeordnet.Laravel Ausgabe zugeordnete Tags

Ich speichere die Beziehung zwischen dem Artikel in einer Zuordnungstabelle und ich möchte nun auf der Artikelseite des Benutzers alle Artikel ausgeben, die der Benutzer eingereicht hat, aber an der Seite des Titels die Kategorien anzeigen, in denen sich der Artikel befindet.

die Artikel-Seite wird alle Artikel auflisten, so dass die Liste eindeutig sein muss.

mein Controller:

public function index() 
    { 
     $articles = DB::table('articles') 
        ->leftjoin('w_relations','w_relations.article_id','=','articles.id') 
        ->leftjoin('articlecategories','articlecategories.id','=','w_relations.type_id') 
        ->where('articles.comp_id',Auth::user()->comp_id)->get(); 

     return view('advertiser/workshops', compact('workshops')); 
    } 

meiner Ansicht

<ul> 
@foreach($articles as $a) 
    <li>{{ $a->article_name }} | {{ $a->category_name }}</li> 
@endforeach 
</ul> 

dachte ich, die oben ausgeben würde

Article 1 | History, Category, Category2 

sondern ich

Article 1 | History Article 
1 | Category Article 
1 | Category2 

Ich kann Art sehen, wohin ich gehe falsch, aber ich weiß nicht, wie die Abfrage zu beheben?

Antwort

0

Hier ist eine schnelle Lösung für Ihr Problem,

  1. Halten Sie die Abfrage
  2. Manipulieren die Ausgabe

Also dann meine Ansicht würde wie folgt aussehen:

<ul> 
@foreach($articles as $a) 
    <li>{{ $a->article_name }} 
    // inner loop on articles would only output category names 
    // that match the current article 
    // quite a labour if you ask me 
    @foreach($articles as $x){ 
     @if($x->id == $a->id){ 
      {{ $a->category_name }} 
     @endif 
    @endforeach 
    </li> 
@endforeach 
</ul> 

Ich bin sicher, dass Sie eine elegantere App haben können roach dazu durch die Nutzung von Laravel's Eloquent ORM