sukohi/evaluation
Composer 安装命令:
composer require sukohi/evaluation
包简介
A Laravel package to manage evaluation data like LIKE, DISLIKE, FAVORITE and REMEMBER.
README 文档
README
A Laravel package to manage evaluation data like LIKE, DISLIKE, FAVORITE and REMEMBER. (This package is maintained under L5.5.)
- Note: This package is inspired by rtconner/laravel-likeable. Thank you, rtconner!
Installation
Execute the following composer command.
composer require sukohi/evaluation:4.*
Register the service provider in app.php.
If you are in L5.5+ you don't need the above.
'providers' => [
//...Others...,
Sukohi\Evaluation\EvaluationServiceProvider::class,
]
Preparation
To make a table for this package, execute the following commands.
php artisan vendor:publish --provider="Sukohi\Evaluation\EvaluationServiceProvider"
and
php artisan migrate
Usage
Add EvaluationTrait to your model like so.
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Sukohi\Evaluation\EvaluationTrait;
class Item extends Model
{
use EvaluationTrait;
}
Now you can use new methods from EvaluationTrait.
Like
$item = \App\Item::find(1);
/* Add `like` */
$item->like($user_id); // You also can set empty ID.
/* Remove `like` */
$item->unlike($user_id);
$item->unlike(['user_id' => $user_id]);
$item->unlike(['ip' => $ip]);
$item->unlike(['user_agent' => $user_agent]);
/* Remove all `like`s */
$item->clearLike();
/* Has */
$item->hasLike($user_id) // True or False
$item->hasLike(['user_id' => $user_id]);
$item->hasLike(['ip' => $ip]);
$item->hasLike(['user_agent' => $user_agent]);
/* Count */
echo $item->like_count;
Dislike
$item = \App\Item::find(1);
/* Add `dislike` */
$item->dislike($user_id); // You also can set empty ID.
/* Remove `dislike` */
$item->undislike($user_id);
$item->undislike(['user_id' => $user_id]);
$item->undislike(['ip' => $ip]);
$item->undislike(['user_agent' => $user_agent]);
/* Remove all `dislike`s */
$item->clearDislike();
/* Has */
$item->hasDislike($user_id) // True or False
$item->hasDislike(['user_id' => $user_id]);
$item->hasDislike(['ip' => $ip]);
$item->hasDislike(['user_agent' => $user_agent]);
/* Count */
echo $item->dislike_count;
Favorite
$item = \App\Item::find(1);
/* Add `favorite` */
$item->favorite($user_id); // You need to set user ID.
/* Remove `favorite` */
$item->unfavorite($user_id);
$item->unfavorite(['user_id' => $user_id]);
$item->unfavorite(['ip' => $ip]);
$item->unfavorite(['user_agent' => $user_agent]);
/* Remove all `favorite`s */
$item->clearFavorite();
/* Has */
$item->hasFavorite($user_id) // True or False
$item->hasFavorite(['user_id' => $user_id]);
$item->hasFavorite(['ip' => $ip]);
$item->hasFavorite(['user_agent' => $user_agent]);
/* Count */
echo $item->favorite_count;
Remember
$item = \App\Item::find(1);
/* Add `remember` */
$item->remember($user_id); // You need to set user ID.
/* Remove `remember` */
$item->unremember($user_id);
$item->unremember(['user_id' => $user_id]);
$item->unremember(['ip' => $ip]);
$item->unremember(['user_agent' => $user_agent]);
/* Remove all `remember`s */
$item->clearRemember();
/* Has */
$item->hasRemember($user_id) // True or False
$item->hasRemember(['user_id' => $user_id]);
$item->hasRemember(['ip' => $ip]);
$item->hasRemember(['user_agent' => $user_agent]);
/* Count */
echo $item->remember_count;
Where Clause
$user_id = 1;
$ip = request()->ip();
$user_agent = request()->userAgent();
// Like
$items = \App\Item::whereHasLike()->get();
$items = \App\Item::whereHasLike($user_id)->get();
$items = \App\Item::whereHasLike(['user_id' => $user_id])->get();
$items = \App\Item::where('id', 1)->orWhereHasLike(['user_id' => $user_id])->get();
$items = \App\Item::where('id', 1)->orWhereHasLike(['ip' => $ip])->get();
$items = \App\Item::where('id', 1)->orWhereHasLike(['user_agent' => $user_agent])->get();
// Dislike
$items = \App\Item::whereHasDislike()->get();
$items = \App\Item::whereHasDislike($user_id)->get();
$items = \App\Item::whereHasDislike(['user_id' => $user_id])->get();
$items = \App\Item::where('id', 1)->orWhereHasDislike(['user_id' => $user_id])->get();
$items = \App\Item::where('id', 1)->orWhereHasDislike(['ip' => $ip])->get();
$items = \App\Item::where('id', 1)->orWhereHasDislike(['user_agent' => $user_agent])->get();
// Favorite
$items = \App\Item::whereHasFavorite()->get();
$items = \App\Item::whereHasFavorite($user_id)->get();
$items = \App\Item::whereHasFavorite(['user_id' => $user_id])->get();
$items = \App\Item::where('id', 1)->orWhereHasFavorite(['user_id' => $user_id])->get();
$items = \App\Item::where('id', 1)->orWhereHasFavorite(['ip' => $ip])->get();
$items = \App\Item::where('id', 1)->orWhereHasFavorite(['user_agent' => $user_agent])->get();
// Remember
$items = \App\Item::whereHasRemember()->get();
$items = \App\Item::whereHasRemember($user_id)->get();
$items = \App\Item::whereHasRemember(['user_id' => $user_id])->get();
$items = \App\Item::where('id', 1)->orWhereHasRemember(['user_id' => $user_id])->get();
$items = \App\Item::where('id', 1)->orWhereHasRemember(['ip' => $ip])->get();
$items = \App\Item::where('id', 1)->orWhereHasRemember(['user_agent' => $user_agent])->get();
Or
$type = 'like'; // like, dislike, favorite or remember
// And
$items = \App\Item::whereHasEvaluations($type)->get();
$items = \App\Item::\App\Music::whereHasEvaluations($type, ['user_id' => $user_id])->get();
$items = \App\Item::\App\Music::whereHasEvaluations($type, ['ip' => $ip])->get();
$items = \App\Item::\App\Music::whereHasEvaluations($type, ['user_agent' => $user_agent])->get();
// Or
$items = \App\Item::where('id', 1)->orWhereHasEvaluations($type)->get();
$items = \App\Item::where('id', 1)->orWhereHasEvaluations($type, ['user_id' => $user_id])->get();
$items = \App\Item::where('id', 1)->orWhereHasEvaluations($type, ['ip' => $ip])->get();
$items = \App\Item::where('id', 1)->orWhereHasEvaluations($type, ['user_agent' => $user_agent])->get();
- This feature is from hikernl. Thank you!
Order By Clause
$direction = 'asc'; // or desc
\App\Item::orderByLike($direction)->get();
\App\Item::orderByDislike($direction)->get();
\App\Item::orderByFavorite($direction)->get();
\App\Item::orderByRemember($direction)->get();
// or
\App\Item::orderByEvaluation('like', $direction)->get();
\App\Item::orderByEvaluation('dislike', $direction)->get();
\App\Item::orderByEvaluation('favorite', $direction)->get();
\App\Item::orderByEvaluation('remember', $direction)->get();
Duplication
If you want to allow users to add duplicate evaluation point(s), please use the following methods.
$music->allowEvaluationDuplications([
'user_id' => false,
'ip' => false,
'user_agent' => true,
]);
// or
$item->allowEvaluationDuplicationByUserId($boolean); // Default: false
$item->allowEvaluationDuplicationByIpAddress($boolean); // Default: false
$item->allowEvaluationDuplicationByUserAgent($boolean); // Default: true
Note: favorite and remember can NOT duplicate user ID per item because they should solely have the point.
License
This package is licensed under the MIT License.
Copyright 2017 Sukohi Kuhoh
统计信息
- 总下载量: 1k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 12
- 点击次数: 3
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2016-08-03