2016-07-30 9 views
1

Ich habe eine kurze, wenn sonst Aussage, die ich Probleme habe, in eine volle umwandeln.Wie konvertiert man diese kurze if-Anweisung in Laravel in eine lange?

Der Grund ist, möchte ich etwas HTML anstelle von nur Text enthalten.

Auth::user()->likes()->where('status_id', $status->id)->first() ? Auth::user()->likes()->where('status_id', $status->id)->first()->like == 1 ? 'You like this post' : 'Like' : 'Like' 

Bitte beachten Sie, dass ich dies in einer Blade-Vorlage mache.

Antwort

1

Es sollte übersetzen:

if(Auth::user()->likes()->where('status_id', $status->id)->first()){ 
    if(Auth::user()->likes()->where('status_id', $status->id)->first()->like == 1){ 
     $var = 'You like this post'; 
    }else{ 
     $var = 'Like'; 
    } 
}else{ 
    $var = 'Like'; 
} 

Added $var den Wert zu speichern, ohne sie es nicht viel Sinn machen.

Auch, wie es ist, können Sie das, wenn Konstrukte kombinieren über and

if(Auth::user()->likes()->where('status_id', $status->id)->first() 
     && Auth::user()->likes()->where('status_id', $status->id)->first()->like == 1){ 
    $if = 'You like this post'; 
}else{ 
    $if = 'Like'; 
} 
+0

ich dies in einer Blade-Vorlage täte, der zweiten Schnipsel funktioniert, aber ich habe die Seite neu zu laden das anzuzeigen Ergebnisse. Ich denke, ich muss auch mein Javascript ändern, um die Ergebnisse ohne Neuladen der Seite zu erhalten. – Halnex

2
$likes = Auth::user()->likes()->where('status_id', $status->id)->first(); 

if ($likes && $likes->like == 1) { 
    $text = 'You like this post'; 
} 
else { 
    $text = 'Like'; 
} 
+0

Dies gibt ein JSON-Array zurück: '{" id ": 39," user_id ": 14," status_id ": 21," created_at ":" 2016-07-30 20:49:35 "," updated_at ":" 2016 -07-30 20:49:35 "," Gefällt mir ": 1} Dir gefällt dieser Beitrag' – Halnex

+0

@Halnex Du musst mehr Kontext in deinen Fragen bereitstellen oder es wird dir unmöglich sein, dir zu helfen. – Qevo