Sag*_*dal 4 php mysql laravel eloquent
我想为我的网站创建一个投票和投票系统,其中一个独特的用户可以在一个帖子上/下投票,下次他只允许相反从数据库下车,之后他再次可以上下投票.
在这种情况下,我有:
用户表:
id
name
Run Code Online (Sandbox Code Playgroud)
辩论表:
id
post
Run Code Online (Sandbox Code Playgroud)
upvotes表:
id
user_id
debate_id
Run Code Online (Sandbox Code Playgroud)
和类似的downvote表:
id
user_id
debate_id
Run Code Online (Sandbox Code Playgroud)
这是管理和跟踪投票和投票概念的好方法吗?
The*_*pha 12
我认为,您可以使用单个表来跟踪votes,结构可能是这样的
表:投票
id | user_id | debate_id | vote
Run Code Online (Sandbox Code Playgroud)
在这里,vote字段可能tinyInt与默认null.
并且,在vote字段中,您只需根据投票类型保留两个不同的值,例如,如果用户投票然后1在vote字段中插入值并进行向下投票,则插入值0.所以,你的表可能看起来像这样
id | user_id | debate_id| vote
1 | 10 | 4 | 1 <-- up
2 | 11 | 4 | 0 <-- down
3 | 12 | 4 | 1 <-- up
Run Code Online (Sandbox Code Playgroud)
在这种情况下,两个用户id = 10及id = 12以上投票的帖子debate_id = 4和另一个用户user_id = 11在同一帖子上投票.在这种情况下,您可以通过计算vote字段的值来查看帖子获得的票数是多少,例如,您可以计算debate_id = 4使用此类内容的票数
$count = Debate::where('debate_id', '=', 4)->where('vote', '=', 1)->count();
Run Code Online (Sandbox Code Playgroud)
此外,您可以使用查询范围,这只是一个想法,并不可能做出涵盖此范围内所有内容的答案.你应该开始使用一些基本的想法,如果你坚持某一点,那么你可以用你的代码询问具体的问题.
另外,我想提一下,如果你在votes表格中找到一个用户ID,debate_id那么这个用户已经对这篇文章进行了投票并找到了投票类型,只需检查该vote字段即可1 or 0.
| 归档时间: |
|
| 查看次数: |
2780 次 |
| 最近记录: |