2017-02-06 4 views
6

Ich arbeite bereits in einer Web-Anwendung in Laravel, die ein Bewertungssystem zwischen Benutzern benötigt. Also habe ich die Laravel-Dokumentation und einige Beiträge hier und da gelesen, aber ich frage mich, welcher der beste Weg ist, um das zu erreichen, was ich tun möchte. Ich kann mich nicht zwischen den nächsten beiden Optionen entscheiden.Rating-System-Implementierung in Laravel

Meine aktuellen Tabellen sind:

Benutzer (id) | Preise (ID, Absender, Kommentar, Rate) | user_rate (id, user_id, rate_id)

Mein aktuelles User-Modell:

public function rates_sent(){ 
    return $this->hasMany(Rate::class,"sender"); 
} 

public function rates(){ 
    return $this->belongsToMany(Rate::class); 
} 

Mein aktuelles Bewerten:

public function sender(){ 
    return $this->belongsTo(User::class,"sender"); 
} 
public function receiver(){ 
    return $this->belongsToMany(User::class); 
} 

Die zweite Option ist:

Benutzer (id) | Raten (id, Absender, Empfänger, kommentieren, bewerten)

User-Modell:

public function rates_sent(){ 
    return $this->hasMany(Rate::class,"sender"); 
} 
public function rates_received(){ 
    return $this->hasMany(Rate::class,"receiver"); 
} 

Bewerten:

public function sender(){ 
    return $this->belongsTo(User::class,"sender"); 
} 
public function receiver(){ 
    return $this->belongsTo(UseR::class,"receiver"); 
} 

So sind beide gute Lösungen? Ist eine Option akzeptabler als die andere? Gibt es eine andere und bessere Option, dies zu tun?

Entschuldigung für meine schlechte Entrish. Vielen Dank im Voraus

Antwort

1

Wenn Sie so denken: "Der Benutzer hat viele Raten, aber die Rate gehört einem Benutzer", dann sollten Sie der zweiten Option folgen. Diese

ist, wie meine Modelle und Tabellen aussehen würde:

  • Benutzer - id

  • Raten - id, sender_id, receiver_id, comment, rate

User.php

public function sentRates() { 
    return $this->hasMany(Rate::class, 'sender_id'); 
} 

public function receivedRates() { 
    return $this->hasMany(Rate::class, 'receiver_id'); 
} 

Rate.php

public function sender() { 
    return $this->belongsTo(User::class, 'sender_id'); 
} 

public function receiver() { 
    return $this->belongsTo(User::class, 'receiver_id'); 
} 

Ich denke, diese Option besser geeignet ist dann erste.

+0

Vielen Dank. Das ist für mich in Ordnung! –