2017-10-07 5 views
0

Ich habe posts, users und favorites Tabelle. Zum Beispiel mache ich einige Post für einen Benutzer mit einer ID von 3 wie folgt favorisiert:Wie zu überprüfen, ob einige Post von Benutzer in Laravel gefallen ist

User::find(3)->favorites()->attach($post->id); 

und wenn die Nutzer Anfrage zweimal senden wird es diesen Favoriten mit diesem post_id, user_id zweimal einzufügen. Ich möchte prüfen, ob ein Beitrag von diesem Benutzer nicht gemocht wird, dann Datensatz in der Datenbank speichern. oder wenn ein Beitrag favorisiert ist, dann ungünstig. Wie kann ich das mit eloquent Beziehung tun? Ich habe User, Post Modelle.

+0

Verwendung Abfragemethode https: // Laravel .com/docs/5.5/Abfragen –

Antwort

3

könnten Sie toggle() verwenden:

User::find(3)->favorites()->toggle($post->id); 

Dies würde es gefallen, wenn es nicht mag, und im Gegensatz zu ihm, wenn es ist.

Wenn Sie nur die Funktion wollen nicht zu duplizieren Gleichen in der Tabelle, verwenden Sie einfach syncWithoutDetaching:

User::find(3)->favorites()->syncWithoutDetaching([$post->id]); 

dieses Modell auf Ihrem Benutzer Einlochen:

class User extends Model { 

    public function like($postId){ 
    $this->favorites()->syncWithoutDetaching([$post->id]); 
    } 

    public function unlike($postId){ 
    $this->favorites()->detach([$post->id]); 
    } 
} 
Verwandte Themen