【问题标题】:Rating system implementation in LaravelLaravel 中的评分系统实现
【发布时间】:2017-06-23 04:48:27
【问题描述】:

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

我目前的表是:

用户 (id) | 费率(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) | 费率(id,sender,receiver,comment,rate)

用户模型:

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");
}

那么,两者都是好的解决方案吗?一种选择是否比另一种更容易接受?还有其他更好的选择吗?

抱歉我的英语不好。提前致谢

【问题讨论】:

    标签: php laravel database-design laravel-5.3


    【解决方案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');
    }
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多