2017-02-06 31 views
6

Pracuję już w aplikacji sieci Web w Laravel, która wymaga systemu oceny między użytkownikami. Tak więc czytałem dokumentację Laravel i niektóre posty tu i tam, ale wciąż zastanawiam się, jaki jest najlepszy sposób na osiągnięcie tego, co chcę zrobić. Nie mogę zdecydować między następnymi dwiema opcjami.Ocena wdrożenia systemu w Laravel

Moje bieżące tabele to:

użytkowników (id) | stawki (identyfikator, nadawca, komentarz, stawka) | user_rate (id, user_id, rate_id)

Mój obecny model użytkownika:

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

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

Mój obecny Oceń model:

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

Druga opcja to:

użytkowników (id) | stopy (id, nadawca, odbiorca, komentarz, stawkę)

modelu użytkownika:

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

Oceń model:

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

Tak, są zarówno dobre rozwiązania? Czy jedna opcja jest bardziej akceptowalna niż druga? Czy jest inna i lepsza opcja?

Przepraszam za moją kiepską wdzięczność. Z góry dziękuję

Odpowiedz

1

Jeśli myślisz w ten sposób: "Użytkownik ma wiele stawek, ale stawka należy do jednego użytkownika", powinieneś zastosować drugą opcję.

ten sposób moje modele i tabele wyglądałby następująco:

  • użytkowników - id

  • stopy - 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'); 
} 

Myślę, że ta opcja jest bardziej odpowiednie wtedy pierwszy.

+0

Dziękuję. To działa dla mnie! –