PHPackages                             avxman/ratings - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. avxman/ratings

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

avxman/ratings
==============

The module ratings post, comment or other object for laravel &gt;=8.0

1.0.0(4y ago)08MITPHPPHP &gt;=8.0

Since Jan 9Pushed 4y ago1 watchersCompare

[ Source](https://github.com/avxman/ratings)[ Packagist](https://packagist.org/packages/avxman/ratings)[ Docs](https://github.com/avxman/ratings)[ RSS](/packages/avxman-ratings/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (1)Dependencies (1)Versions (3)Used By (0)

Модуль рейтинга laravel &gt;= 8.0
=================================

[](#модуль-рейтинга-laravel--80)

#### Работа с рейтингом на сайте. Вывод и сохранение рейтинга.

[](#работа-с-рейтингом-на-сайте-вывод-и-сохранение-рейтинга)

Установка модуля с помощью composer
-----------------------------------

[](#установка-модуля-с-помощью-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

[](#команды-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()`
--------------------------------

[](#использование-метода-getmany)

При использовании данного метода в классе модели которую привязываем к рейтингу нужно добавить трейт `Avxman\Rating\Traits\RatingModelTrait`. Когда в модели уже ранее Вами был написан метод `rating()`, тогда его нужно переименовать, так как трейт использует данный метод

Использование метода `save($collection, $isPermission):bool`
------------------------------------------------------------

[](#использование-метода-savecollection-ispermissionbool)

Метод может наследовать `Дополнительные методы (очерёдность первичная)`перед вызовом save()
К примеру:
 \\Avxman\\Rating\\Facades\\RatingFacade::save(collect(\[ 'model'=&gt;\\App\\Models\\User::class, 'model\_id'=&gt;'1', 'rating'=&gt;'1' \]));
\\Avxman\\Rating\\Facades\\RatingFacade::save(collect(\[ 'model'=&gt;\\App\\Models\\AnyModel::class, 'model\_id'=&gt;'1', 'rating'=&gt;'1', 'type'=&gt;'five' \]), true);

- `$collection` - коллекция входных данных **\['model'=&gt;string,'model\_id'=&gt;string|int,'rating'=&gt;string|int,'type'=&gt;string\]**
    `model` - имя модели;
    `model_id` - ID модели;
    `rating` - оценка рейтинга;
    `type` - тип рейтинга, `type_list` данные из ключа конфигурационного файла rating.php.
    Обязательных данных `['model','model_id','rating']`
- `$isPermission` - **\[false, true\]**
    `false` - сохраняем рейтинг, при условии, что рейтинг с указанной моделью уже существует в таблице рейтингов
    `true` - сохраняем рейтинг в любом случаи, даже при отсутствии модели в таблице рейтингов. При отсутствии - создается новая запись в таблице (будьте осторожны, так как можно записать не существующую модель)
- `return bool` - возвращает логический результат, при удачной записи - true

Примеры получения результатов
-----------------------------

[](#примеры-получения-результатов)

#### Вызов в controllers

[](#вызов-в-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

[](#вызов-во-views)

###### Одиночный рейтинг

[](#одиночный-рейтинг)

```
// Все вышеуказанные функция одиночного рейтинга работают и в шаблонах
{{RatingFacade::getOne($user)->toHtml()}}
// или
{{RatingFacade::setType('ten')->getOne($user)->toJson()}}

```

###### Множественный рейтинг

[](#множественный-рейтинг)

```
// Все вышеуказанные функция множественного рейтинга работают и в шаблонах
{{RatingFacade::getMany($users, 'toHtml')}}
// или
{{RatingFacade::setType('ten')->getMany($users, 'toJson')}}

```

###  Health Score

23

—

LowBetter than 27% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity4

Limited adoption so far

Community4

Small or concentrated contributor base

Maturity55

Maturing project, gaining track record

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

2

Last Release

1583d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/21d314358577f4f26cd65eb711363b98327a7ba7e8b924ccecd735f0c9509c6e?d=identicon)[avxman](/maintainers/avxman)

### Embed Badge

![Health badge](/badges/avxman-ratings/health.svg)

```
[![Health](https://phpackages.com/badges/avxman-ratings/health.svg)](https://phpackages.com/packages/avxman-ratings)
```

###  Alternatives

[wireui/wireui

TallStack components

1.8k1.3M16](/packages/wireui-wireui)[livewire/volt

An elegantly crafted functional API for Laravel Livewire.

4195.3M84](/packages/livewire-volt)[ramonrietdijk/livewire-tables

Dynamic tables for models with Laravel Livewire

21147.4k](/packages/ramonrietdijk-livewire-tables)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
