alyakin/favorites
Composer 安装命令:
composer require alyakin/favorites
包简介
Favorites system for Laravel with folder support and polymorphic relations
README 文档
README
📦 Описание
Laravel Favorites — это универсальный модуль для создания полиморфных связей между владельцем и любыми избираемыми сущностями.
Позволяет одному владельцу (профилю, пользователю и т.п.) добавлять в избранное объекты разных моделей, таких как товары, статьи, профили, комментарии и др.
Пакет поддерживает:
- организацию избранного по папкам с уникальными названиями,
- работу с UUID и timestamps "из коробки",
- строгую привязку избранного к конкретному владельцу.
🎯 Подходит для
- 💼 Электронной коммерции — покупатель может сохранять избранные товары, бренды или подборки.
- 📚 Контент-платформ — читатель может добавлять в избранное статьи, авторов или хештеги.
- 📊 B2B/CRM систем — пользователь может группировать клиентов, документы или сделки в "избранное" для быстрого доступа.
🧭 Оглавление
🛠 Системные требования
- PHP 8.1 или выше
- Laravel 10.x или выше
- Composer для управления зависимостями
📥 Установка
Установите пакет через Composer:
composer require alyakin/favorites
Файл конфигурации отсутствует — модуль готов к использованию сразу после установки и регистрации провайдера.
⚙️ Как использовать
Сервисы можно получить через сервис-контейнер Laravel:
use \Alyakin\Favorites\Services\{FavoriteService, FavoriteFolderService}; $favoritesService = app(FavoriteService::class); $folderService = app(FavoriteFolderService::class);
Ниже представлены базовые сценарии использования.
➕ Добавление в избранное
// Добавить объект в избранное $favoritesService->addToFavorites($ownerId, $model); // Добавить в конкретную папку: $favoritesService->addToFavorites($ownerId, $model, 'read later');
➖ Удаление из избранного
// Удалить объект из избранного: $favoritesService->removeFromFavorites($ownerId, $model);
📂 Работа с папками
// Создать папку $folderService->createFolder($ownerId, 'Папка'); // Переименовать папку $folderService->renameFolder($ownerId, $folderId, $newName); // Переместить элемент в папку: $favoritesService->moveToFolder($favoriteId, $folderId); // Получить все папки владельца: $folderService->getAllFoldersForOwner($ownerId); // Удалить папку: // ⚠️ ВНИМАНИЕ! При удалении папки будут также удалены все избранные элементы внутри неё. $folderService->deleteFolder($ownerId, $folderId);
📄 Получение избранного
// Получить все избранные элементы владельца: $favoritesService->getFavorites($ownerId); // Получить избранные в конкретной папке: $favoritesService->getFavorites($ownerId, 'funy'); // Проверить, находится ли объект в избранном: $favoritesService->isFavorited($ownerId, $model);
🎛 Кастомизация
Пакет спроектирован с учетом расширяемости и адаптации под проект.
- Вы можете заменить модель владельца, передавая любой UUID-совместимый
ownerId. - Папки не являются обязательными — можно использовать избранное и без них.
- Вся бизнес-логика изолирована в сервисах (
FavoriteService,FavoriteFolderService) и может быть легко расширена или переопределена через DI-контейнер. - Названия таблиц, столбцов и ключей соответствуют общим стандартам Laravel и могут быть переопределены при необходимости.
🔄 Пример: замена логики добавления
Создайте свой кастомный сервис:
class CustomFavoriteService extends \Alyakin\Favorites\Services\FavoriteService { // ... }
Переопределите нужный метод:
public function addToFavorites(string $ownerId, Model $model, ?string $folderName = null): Favorite { // своя логика — например, логирование \Log::info('Добавление в избранное', ['owner_id' => $ownerId]); return parent::addToFavorites($ownerId, $model, $folderName); }
Зарегистрируйте в AppServiceProvider:
$this->app->bind( \Alyakin\Favorites\Services\FavoriteService::class, \App\Services\CustomFavoriteService::class );
Теперь Laravel будет использовать вашу реализацию вместо базовой.
🤝 Сотрудничество
Мы открыты к предложениям и улучшениям!
- Сообщайте об ошибках через Issues
- Присылайте Pull Requests с улучшениями
- Предлагайте идеи по расширению функциональности
📄 Лицензия
This package is open-source and available under the MIT License.
alyakin/favorites 适用场景与选型建议
alyakin/favorites 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 5 次下载、GitHub Stars 达 0, 最近一次更新时间为 2025 年 03 月 28 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 alyakin/favorites 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 alyakin/favorites 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 5
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 17
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-03-28