2017-02-06 2 views
6

Я уже работаю в веб-приложении в Laravel, которому нужна рейтинговая система между пользователями. Итак, я читал документацию Laravel и некоторые сообщения здесь и там, но я продолжаю задаваться вопросом, какой лучший способ выполнить то, что я хочу сделать. Я не могу решить между следующими двумя вариантами.Внедрение системы оценки в Laravel

Мои текущие таблицы:

пользователей (ID) | Цены (id, sender, comment, rate) | user_rate (идентификатор, user_id, rate_id)

Моя текущая модель Пользователь:

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

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

Моя текущая ставка Модель:

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

Второй вариант:

пользователей (идентификатор) | ставки (идентификатор, отправитель, получатель, комментарий, скорость)

модель Пользователь:

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

Оценить модель:

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

Таким образом, оба хорошие решения? Является ли один из вариантов более приемлемым, чем другой? Есть ли еще и лучший вариант для этого?

Извинения за мой плохой гравюр. Заранее спасибо

ответ

1

Если вы так думаете: «У пользователя много ставок, но ставка принадлежит одному пользователю», тогда вы должны следовать второму варианту.

Это как мои модели и таблицы будет выглядеть следующим образом:

  • пользователей - id

  • ставки - 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'); 
} 

Я думаю, что этот вариант является более подходящим, то первый один.

+0

спасибо. Это подходит для меня! –

Смежные вопросы