承接 avxman/ratings 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

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() - получаем результат в виде json
  • toHtml() - получаем результат в виде 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 我们能提供哪些服务?
定制开发 / 二次开发

基于 avxman/ratings 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 8
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 7
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2021-09-30