我已经在使用 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/