sukohi / evaluation
一个用于管理评价数据的 Laravel 扩展包,如 LIKE、DISLIKE、FAVORITE 和 REMEMBER。
4.0.5
2017-10-03 09:48 UTC
Requires
- laravel/framework: ~5.0
README
一个用于管理评价数据的 Laravel 扩展包,如 LIKE、DISLIKE、FAVORITE 和 REMEMBER。(此包在 L5.5 下维护。)
- 注意:此包受 rtconner/laravel-likeable 启发。感谢,rtconner!
安装
执行以下 composer 命令。
composer require sukohi/evaluation:4.*
在 app.php 中注册服务提供者。
如果你在 L5.5+,你不需要上面的步骤。
'providers' => [
//...Others...,
Sukohi\Evaluation\EvaluationServiceProvider::class,
]
准备工作
要为这个包创建一个表,请执行以下命令。
php artisan vendor:publish --provider="Sukohi\Evaluation\EvaluationServiceProvider"
和
php artisan migrate
使用
如此将 EvaluationTrait
添加到您的模型中。
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Sukohi\Evaluation\EvaluationTrait;
class Item extends Model
{
use EvaluationTrait;
}
现在,您可以使用 EvaluationTrait
中的新方法。
喜欢
$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;
不喜欢
$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;
收藏
$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;
记住
$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;
条件查询
$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();
或
$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();
- 此功能来自 hikernl。感谢!
排序子句
$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();
重复
如果您想允许用户添加重复的评价点,请使用以下方法。
$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
注意:由于 favorite
和 remember
应该只有评价点,所以它们不能重复用户 ID。
许可证
此包根据 MIT 许可证授权。
版权所有 2017 Sukohi Kuhoh