avxman/ratings
Composer 安装命令:
composer require avxman/ratings
包简介
The module ratings post, comment or other object for laravel >=8.0
README 文档
README
Работа с рейтингом на сайте. Вывод и сохранение рейтинга.
Установка модуля с помощью composer
composer require avxman/ratings
Настройка модуля
После установки модуля не забываем объязательно запустить команды artisan:
php artisan vendor:publish --tag="avxman-ratings-config",
php artisan vendor:publish --tag="avxman-ratings-migrate"
и после php artisan migrate.
Это установит таблицу рейтинга для получения и сохранения данных.
Команды artisan
- Выгружаем все файлы
php artisan vendor:publish --tag="avxman-ratings-all"
- Выгружаем миграционные файлы
php artisan vendor:publish --tag="avxman-ratings-migrate"
- Выгружаем файлы моделек
php artisan vendor:publish --tag="avxman-ratings-model"
- Выгружаем шаблонные файлы
php artisan vendor:publish --tag="avxman-ratings-view"
- Выгружаем конфигурационные файлы
php artisan vendor:publish --tag="avxman-ratings-config"
Методы
Дополнительные (очерёдность вызова метода - первичная)
setEnabled()- перезаписываем вкл./откл. рейтинга определённой моделиsetIp()- перезаписываем Ip адрес пользователяsetUserAgent()- перезаписываем User agent пользователяsetType()- перезаписываем тип рейтингаsetView()- перезаписываем шаблоны рейтингаsetModelName()- перезаписываем модель рейтингаsetModelUserName()- перезаписываем модель рейтинга пользователяsetExceptModel()- перезаписываем исключение моделей, которые не будут участвовать в рейтингеreset()- сбор параметров рейтинга
Инициализация или сохранение рейтинга (очерёдность вызова метода - второстепенная)
isError()- найдена ли ошибка или отключён рейтингgetOne()- получение рейтинга одиночного результата из моделиgetMany()- получение рейтинга множественного результата из моделиsave()- сохранение рейтинга определённой модели
Вывод (очерёдность вызова метода - последняя, при условии одиночной модели)
toCollection()- получаем результат в виде коллекцииtoArray()- получаем результат в виде массиваtoJson()- получаем результат в виде jsontoHtml()- получаем результат в виде html
Использование метода getMany()
При использовании данного метода в классе модели которую привязываем
к рейтингу нужно добавить трейт Avxman\Rating\Traits\RatingModelTrait.
Когда в модели уже ранее Вами был написан метод rating(),
тогда его нужно переименовать, так как трейт использует данный метод
Использование метода save($collection, $isPermission):bool
Метод может наследовать Дополнительные методы (очерёдность первичная)
перед вызовом save()
К примеру:
\Avxman\Rating\Facades\RatingFacade::save(collect([
'model'=>\App\Models\User::class,
'model_id'=>'1',
'rating'=>'1'
]));
\Avxman\Rating\Facades\RatingFacade::save(collect([
'model'=>\App\Models\AnyModel::class,
'model_id'=>'1',
'rating'=>'1',
'type'=>'five'
]), true);
$collection- коллекция входных данных ['model'=>string,'model_id'=>string|int,'rating'=>string|int,'type'=>string]
model- имя модели;
model_id- ID модели;
rating- оценка рейтинга;
type- тип рейтинга,type_listданные из ключа конфигурационного файла rating.php.
Обязательных данных['model','model_id','rating']$isPermission- [false, true]
false- сохраняем рейтинг, при условии, что рейтинг с указанной моделью уже существует в таблице рейтингов
true- сохраняем рейтинг в любом случаи, даже при отсутствии модели в таблице рейтингов. При отсутствии - создается новая запись в таблице (будьте осторожны, так как можно записать не существующую модель)return bool- возвращает логический результат, при удачной записи - true
Примеры получения результатов
Вызов в controllers
use App\Models\User;
use Avxman\Rating\Facades\RatingFacade;
//Получаем одиночный рейтинг (только одна модель)
$user = User::with('rating')->first();
RatingFacade::setEnabled(false)->getOne($user);
RatingFacade::setIp('111.111.111.111')->getOne($user);
RatingFacade::setUserAgent('a new user agent')->getOne($user);
RatingFacade::setType('ten')->getOne($user);
RatingFacade::setView('vendor.rating.ten.items', 'vendor.rating.ten._item')->getOne($user);
RatingFacade::setModelName(RatingNewModel::class)->getOne($user);
RatingFacade::setModelUserName(RatingUserNewModel::class)->getOne($user);
RatingFacade::setExceptModel([User::class])->getOne($user);
RatingFacade::reset()->getOne($user);
RatingFacade::isError();
RatingFacade::getOne($user)->toCollection();
RatingFacade::getOne($user)->toArray();
RatingFacade::getOne($user)->toJson();
RatingFacade::getOne($user)->toHtml();
//Получение множественного рейтинга (коллекция из одного типа модели)
//Для работы с множественным рейтингом нужно подключить трейт к модели
//для использования связей (читаем "Использование метода getMany()")
$users = User::with('rating')->get();
RatingFacade::setEnabled(false)->getMany($users, 'toHtml');
RatingFacade::setIp('111.111.111.111')->getMany($users, 'toHtml');
RatingFacade::setUserAgent('a new user agent')->getMany($users, 'toHtml');
RatingFacade::setType('ten')->getMany($users, 'toHtml');
RatingFacade::setView('vendor.rating.ten.items', 'vendor.rating.ten._item')->getMany($users, 'toHtml');
RatingFacade::setModelName(RatingNewModel::class)->getMany($users, 'toHtml');
RatingFacade::setModelUserName(RatingUserNewModel::class)->getMany($users, 'toHtml');
RatingFacade::setExceptModel([User::class])->getMany($users, 'toHtml');
RatingFacade::reset()->getMany($users, 'toHtml');
RatingFacade::getMany($users, 'toCollection');
RatingFacade::getMany($users, 'toArray');
RatingFacade::getMany($users, 'toJson');
RatingFacade::getMany($users, 'toHtml');
$this->result['ratings'] = $users->first()->getRating??'';
Вызов во views
Одиночный рейтинг
// Все вышеуказанные функция одиночного рейтинга работают и в шаблонах
{{RatingFacade::getOne($user)->toHtml()}}
// или
{{RatingFacade::setType('ten')->getOne($user)->toJson()}}
Множественный рейтинг
// Все вышеуказанные функция множественного рейтинга работают и в шаблонах
{{RatingFacade::getMany($users, 'toHtml')}}
// или
{{RatingFacade::setType('ten')->getMany($users, 'toJson')}}
avxman/ratings 适用场景与选型建议
avxman/ratings 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 8 次下载、GitHub Stars 达 0, 最近一次更新时间为 2021 年 09 月 30 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 avxman/ratings 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 avxman/ratings 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 8
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 7
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2021-09-30