Laravel中的评级系统实施

时间:2017-02-06 09:37:27

标签: php laravel database-design laravel-5.3

我已经在Laravel的Web应用程序中工作,需要用户之间的评级系统。所以,我一直在阅读Laravel文档以及这里和那里的一些帖子,但我一直想知道哪个是完成我想要做的最好的方法。我无法决定接下来的两个选项。

我目前的表格是:

用户(id)| 费率(身份证,寄件人,评论,费率) | user_rate(id,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);
}

第二个选项是:

用户(id)| 费率(身份证,发件人,收件人,评论,费率)

用户模型:

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 个答案:

答案 0 :(得分: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');
}

我认为这个选项比第一个更合适。