为 Laravel 应用程序构建的包,允许对项目进行投票。可以对项目进行点赞或踩,这些操作将计入总分数。

v1.1.0 2020-04-27 11:51 UTC

This package is auto-updated.

Last update: 2024-09-27 22:23:12 UTC


README

Build Status Total Downloads License

此包为您的 Laravel 项目提供了创建和管理用户创建内容的点赞/踩系统。该项目灵感来源于 Reddit 的 Karma。

本包的主要特性

此包将为您提供 2 个迁移表,用于创建投票表(dd_votes)和投票者表(dd_voters)。

您还将获得访问两个特性的权限

Votable -> 为可投票对象(如博客文章、评论、照片等)添加点赞和踩功能,这些对象有一个代表所有者的 user_id。

CanVote -> 应用于您的 User 模型。为您的用户添加了额外的功能,使他们能够管理自己的投票能力,并提供一个可投票的分数(从其他用户投给他们的可投票对象的投票中计算得出)。

您还可以访问两个模型 Vote 和 Voter。

将配置文件 vote.php 发布到您的配置目录。

安装

通过 Composer

$ composer require daydevelops/vote
$ php artisan vendor:publish
$ php artisan migrate

使用方法

应用 Votable 特性

假设我们有一个博客,用户可以创建评论。如果我们想允许用户对评论进行点赞和踩,我们只需添加 Votable 特性。

...
use Daydevelops\Vote\Traits\Votable;

class Comment extends Model
{
    use Votable;

    ...

}

应用 CanVote 特性

应将 CanVote 特性应用于您的 User 模型。

...
use Daydevelops\Vote\Traits\CanVote;

class User extends Model
{
    use CanVote;

    ...

}

可用的 Votable 对象方法/属性

认证用户投下投票

$this->vote($type); // $type should be "up" or "down" 

认证用户投下点赞

$this->upVote(); // alias of $this->vote('up'); 

认证用户投下踩

$this->downVote(); // alias of $this->vote('down'); 

认证用户移除投票

$this->unVote(); 

认证用户是否对此对象进行了投票?

$this->hasVoted(); 

认证用户是否对此对象进行了点赞?

$this->hasUpVoted(); 

认证用户是否对此对象进行了踩?

$this->hasDownVoted(); 

获取对此对象的所有投票的集合

$this->votes(); // hasMany relationship

获取对此对象投下的所有投票的总分数

$this->score; 

可用的 CanVote(用户)对象方法/属性

此用户是否有投票记录?

$this->isVoter(); 

获取此用户的投票对象

$this->voter; // returns hasOne relationship to Daydevelops\Vote\Models\Voter

为此用户创建投票记录

$this->makeVoter($change); // optional signed int $change is added to the default voter weight (see config/vote.php) upon creation 

获取其他用户投给此用户的投票计算出的分数

$this->votable_score; 

可用的 Voter 模型方法/属性

其中 $voter = $user->voter;

更改投票者未来投票的权重

$voter->addWeight($change); // signed int $change is added to the users current vote weight.

投票者是否可以对此对象进行投票?

$voter->canVote($votable_item); 

投票者是否被禁止投票?

$voter->isBanned();

禁止或解禁投票者

$voter->ban();
$voter->unban();

事件

Daydevelops\Vote\Events\ItemUpVoted -> 当可投票对象被点赞时触发

Daydevelops\Vote\Events\ItemDownVoted -> 当可投票对象被踩时触发

Daydevelops\Vote\Events\VoterWeightChanged -> 当投票者的投票权重更新时触发

测试

有关此包功能的任何进一步说明,请参阅测试或联系包的维护者。

贡献

有关详细信息和工作清单,请参阅 contributing.md

安全

如果您发现任何与安全相关的问题,请通过电子邮件 adamday@daydevelops.com 而不是使用问题跟踪器。

鸣谢

许可证

麻省理工学院。请参阅许可文件以获取更多信息。