2016-10-24 3 views
3

Also ich bin ziemlich neu bei Laravel und PHP, also hatte ich ein paar Fragen.Laravel verwenden, um eine Ansicht mit Posts zu rendern und Likes von diesem Post abzurufen

Gerade jetzt habe ich ein Post-Modell, das viele Likes hat. Momentan versuche ich alle Posts in einer Ansicht anzuzeigen mit @foreach($posts as $post), um die Posts vom Controller zu erhalten (dieser Teil funktioniert bereits, Code zum Abrufen von Post-Inhalt nicht relevant) Ich möchte alle Vorlieben und Abneigungen anzeigen, die ein Post in einem hat prägnante Art und Weise.

Gegenwärtig ist ein Like-> Like == 1 ein Like und ein Like-> Like == 0 ist eine Abneigung.

Wenn also ein Beitrag 5 Abneigungen hat, wird es angezeigt: Bob Jane und 4 andere Dislike dieses

Oder wenn es hat 2 Abneigungen: Jane Doe und John Teach Dislike diese

  <div class = "dislikes"> 
       @if(count($post->likes->where('like',0))==0) 
       @elseif(count($post->likes->where('like',0))==1) 
        {{ $post->likes->where('like', 0)->first()->user->first_name }} {{ $post->likes->where('like', 0)->first()->user->last_name }} Disikes this 
       @elseif(count($post->likes->where('like',0))==2) 
        {{($post->likes->where('like', 0))->first()->user->first_name}} {{($post->likes->where('like', 0))->first()->user->last_name}} and {{($post->likes->where('like', 0))->last()->user->first_name}} {{($post->likes->where('like', 0))->last()->user->last_name}} Dislike This 
       @elseif(count($post->likes->where('like', 0))>=4) 
        {{($post->likes->where('like', 0))->first()->user->first_name}} {{($post->likes->where('like', 0))->first()->user->last_name}} and {{count($post->likes->where('like', 0)) - 1}} Others Like This 
       @else 
        @for($i=0;$i<count($post->likes->where('like',0));$i++) 
         @if($i+1 == count($post->likes->where('like',0))) 
          and {{$post->likes->where('like',0))->get()[$i]->user->first_name}} {{$post->likes->where('like',0)->get()[$i]->user->last_name}} Like This 
         @else 
          {{$post->likes->where('like',0)->get()[$i]->user->first_name}} {{$post->likes->where('like',0)->get()[$i]->user->last_name}} , 
         @endif 
        @endfor 
       @endif 
      </div> 

Ich habe mit dem Code für ein paar Stunden herum gespielt, aber ($post->likes->where('like',0))[$i]->user->first_name funktioniert nicht in meiner for-Schleife, und ($post->likes->where('like',0))[$i]->user->first_name wird auch nicht funktionieren. (Ich habe herum mit der Klammerplatzierung ein wenig gespielt, um zu versuchen und zu beheben)

Ich bin ratlos. Irgendwelche Vorschläge über einen besseren Weg, dem ich mich nähern könnte, würden sehr geschätzt werden.

Vielen Dank.

+0

die $ ist post-> likes-> wo ('like', 0) nicht leer? ist das nicht $ post-> likes-> where ('like', 0) -> get()? – Beginner

Antwort

0

Ich kenne Ihre Modell- oder Tabellenstruktur nicht. Aber sagen Sie, Sie haben Tisch und Modell namens Post, Like und Dislike. Sie sollten Beziehung in Post-Modell haben, wie:

public function like() 
{ 
    return $this->hasMany(Like::class); 
} 

public function dislike() 
{ 
    return $this->hasMany(Dislike::class); 
} 

dann können Sie die Daten in der Steuerung abrufen wie

$posts = Post::with('like', 'dislike')->get(); 
return view('view', compact('posts')); 

jetzt können Sie Schleife in Sicht wie

@foreach($posts as $post) 

    @if($post->like != null) 
    <div class = "like"> 
     @foreach($post->like) 
      // render the view here... 
     @endforeach 
    </div> 
    @endif 

    @if($post->dislike != null) 
    <div class = "dislikes"> 
     @foreach($post->dislike) 
      // render the view here... 
     @endforeach 
    </div> 
    @endif 

@endforeach 
+0

Okay, also ist meine Struktur eher wie –

+0

Okay, ich werde eine Bearbeitung mit einem prägnanteren Beispiel meiner Like-Klasse veröffentlichen, aber ich bin mir nicht sicher, ob ich das schaffen kann oder nicht. Im Moment übergebe ich alle Posts im Controller und versuche zu überprüfen, ob der Post in der Ansicht ähnlich aussieht oder nicht, ähnlich wie bei deinem Code. Das Problem ist, dass ich eine Struktur für Likes habe, die einen Booleschen Wert haben, ob sie Likes oder Dislikes sind. –

+0

Das Problem hier ist, dass ich versuche, alle Likes und Abneigungen (die eigentlich alle Like-Klasse sind mit einem Boolean, der entscheidet, ob sie ein Gleiches oder ein Abneigung sind) auf einer Seite, die alle Posts, die die Seite anfordert, zu erhalten , also kann ich die Likes und Abneigungen nicht auf diese Weise pushen. –

Verwandte Themen