php - Laravel 中的评级系统实现

标签 php laravel database-design laravel-5.3

我已经在使用 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) | rates (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");
}

那么,这两个都是好的解决方案吗?一种选择比另一种更容易接受吗?有没有其他更好的选择来做到这一点?

为我糟糕的英语道歉。提前致谢

最佳答案

如果您这样想:“用户有很多费率,但费率属于一个用户”,那么您应该遵循第二个选项。

这就是我的模型和表格的样子:

  • 用户 - id

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

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

关于php - Laravel 中的评级系统实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42064490/

相关文章:

php - 为什么网站在线时我的后台不工作?

php - Laravel 查询构建器不适用于子查询中的 where 子句

php - 通过 laravel API 使用 firebase token 身份验证

laravel - 代理通行证 : Mixed Content in Laravel HTTPS

sql - 在父表和子表之间引入一个新表

数据库性能 : Using one entity/table with the max. 可能的属性或拆分到不同的实体/表?

javascript - 如何使用 javascript 链接 href

PHP 列样式

database-design - 表示数据库中的产品分类

php - jQuery : pass an array in ajax