定制 corepine/actions 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

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

corepine/actions

Composer 安装命令:

composer require corepine/actions

包简介

Polymorphic action tracking for Laravel (likes, dislikes, reactions) with synced counters.

README 文档

README

corepine/actions is a Laravel package for polymorphic user actions (upvotes, downvotes, reactions) with synced aggregate counters.

Install

composer require corepine/actions
php artisan actions:install

This publishes:

  • config/corepine-actions.php
  • actions migrations
  • app/Casts/ActionType.php cast stub

Optional flags:

php artisan actions:install --migrate
php artisan actions:install --force

Quick Start (Service / Facade)

use Corepine\Actions\Facades\Actions;

$isUpvoted = Actions::for($comment)->by($user)->upvote(); // true = set, false = removed
$isDownvoted = Actions::for($comment)->by($user)->downvote();

Actions::for($comment)->by($user)->reaction('👋');
Actions::for($comment)->by($user)->reaction(null); // remove reaction

$upvotes = Actions::for($comment)->count('upvote');
$downvotes = Actions::for($comment)->count('downvote');

Custom Action Types

Option A: add extra types directly in config:

'action_types' => ['bookmark'],

Option B: publish app/Casts/ActionType.php, override types(), and point config:

'action_type_cast' => \App\Casts\ActionType::class,

If you omit action_type_cast, the package uses Corepine\Actions\Casts\ActionType by default.

Then use custom actions:

Actions::for($comment)->by($user)->toggle('bookmark');
Actions::for($comment)->count('bookmark');

HasActions Concern

Use the built-in concern on your actionable models:

use Corepine\Actions\Models\Concerns\HasActions;

class Comment extends Model
{
    use HasActions;
}

Then call helpers directly from the model:

$comment->upvoteBy($user);
$comment->downvoteBy($user);
$comment->reactBy($user, '👋');

$comment->upvotedBy($user);
$comment->upvotesCount();
$comment->formattedUpvotesCount();
$comment->syncAllActionCounts();

// Manual cleanup for this actionable:
$comment->clearActionsAndCounts();

// Alias:
$comment->deleteActionsAndCounts();

When the actionable model is deleted, HasActions auto-cleans related actions and action_counts rows.

Reaction Groups (Render Ready)

For emoji reaction chips like 👋 6 or ❤️ 2.5K, use grouped reactions:

$groups = $comment->reactionGroups();

// Each item has:
// ['reaction' => '👋', 'count' => 6, 'formatted_count' => '6']
// ['reaction' => '❤️', 'count' => 2500, 'formatted_count' => '2.5K']

If you already have a precomputed count, format it directly:

$comment->formattedReactionsCount(2500); // 2.5K

Counter Consistency

Counters are stored in action_counts and updated automatically from Action model created/deleted events (including service writes).

If you need to rebuild counters for a specific model:

Actions::for($comment)->syncAllCounts();

If you want syncAllCounts() to include custom zero-bucket types, append them:

Actions::for($comment)->syncAllCounts(['bookmark']);

If you need to delete everything for one actionable and keep tables in sync:

Actions::for($comment)->clear();

Tables

  • actions: one row per actor + actionable + type
  • action_counts: aggregate count per actionable + type

corepine/actions 适用场景与选型建议

corepine/actions 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 3 次下载、GitHub Stars 达 1, 最近一次更新时间为 2026 年 03 月 08 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「laravel」 「likes」 「counters」 「actions」 「reactions」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 corepine/actions 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 corepine/actions 我们能提供哪些服务?
定制开发 / 二次开发

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

BUG 修复 & 性能优化

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

项目外包 & 长期维护

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

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

统计信息

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

GitHub 信息

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

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-03-08