首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Laravel 5构建投票系统

使用Laravel 5构建投票系统
EN

Stack Overflow用户
提问于 2015-08-10 22:56:12
回答 1查看 1.3K关注 0票数 0

我正在尝试为我的网页建立投票系统(Laravel 5)。现在,任何用户都可以投票多次,我想解决这个问题。

以下是我在php中的代码:

代码语言:javascript
复制
public function addVote()
{
    $bikepoint = $this->bikepoint->find($id);
    $userid = \Sentry::getUser()->id;
    $votesid = \DB::table('bikepoints')->select('votesuid')->where('votesuid', 'LIKE' , $userid)->get();
    if (...) {
        $bikepoint->votes = $bikepoint->votes + 1;
        $bikepoint->votesuid = $bikepoint->votesuid . $userid . '; ';
        echo 'Success!';
    }
    else {
        echo 'Fail!';
    }
    $bikepoint->save();
}

我的DB表:

代码语言:javascript
复制
id  title   votes  votesuid
1   point1  2      93; 22;
2   point2  3      92; 28; 47;
3   point3  45     ...
4   point4  32     ...
5   point5  12     ...

因此,当用户单击"Add vote“按钮时,函数会将其ID添加到votesuid字段,并将一票添加到votes字段。

我想通过检查用户的ID是否放在votesuid字段中来检查用户是否已经投票。如果是这样,用户就不能再投票了。

例如,ID为922847的用户不能再次投票。

EN

回答 1

Stack Overflow用户

发布于 2015-08-12 23:59:23

正如其他人在评论中建议的那样,是的,您确实需要更改您的系统,以便每次投票在表中都有自己的记录。

因此,为它创建一个Votes表和一个Laravel模型类,并为您的用户模型类提供与投票的hasMany()关系。

这实际上不是太多的工作,不是吗?

但现在,您的问题的解决方案变得非常简单--即:

代码语言:javascript
复制
$votes = Sentry::getUser()->votes;

目前的情况是,您需要执行子字符串LIKE查询,这很难编写,而且当您的DB开始变得更大时,还会给您带来严重的性能问题,因此,是的,您现在肯定需要对其进行重构。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31922826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档