繁体   English   中英

使用Laravel 5构建投票系统

[英]Build vote system using Laravel 5

我正在尝试为我的网页(Laravel 5)构建投票系统。 现在,任何用户都可以投票多次,我想修复它。

这是我在php中的代码:

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

我的数据库表:

id  title   votes  votesuid
1   point1  2      93; 22;
2   point2  3      92; 28; 47;
3   point3  45     ...
4   point4  32     ...
5   point5  12     ...

因此,当用户点击“添加投票”按钮,功能增加了其ID添加到votesuid场和一票的votes现场。

我想通过检查用户的ID是否放置在votesuid字段中来检查用户是否已经投票。 而且,如果是这样,用户将无法再投票。

例如,用户ID的922847应该能够投票另一个时间。

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

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

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

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

$votes = Sentry::getUser()->votes;

照目前的情况,您将需要执行子字符串LIKE查询,这很难编写,并且在数据库开始变大时也会给您带来主要的性能问题,所以是的,您现在肯定需要对其进行重构。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM