“时间轴更新后怎么同步”不是 Composer 的问题——Composer 只管理 PHP 依赖包,不处理日历同步、模型字段变更或数据库迁移等业务逻辑,相关操作需手动执行 artisan 命令、发布配置、运行迁移或调整审计配置。

“时间轴更新后怎么同步”不是 Composer 的问题,而是你混淆了工具边界——Composer 不处理日历、时间轴或模型变更的业务逻辑同步,它只管 PHP 依赖包的安装与版本管理。
为什么运行 composer update 不会同步时间轴或模型变更
Composer 是依赖管理器,不是数据同步工具。所谓“时间轴更新”,大概率来自你用的某个日历类库(比如 tymio 或自研模块),它的双向同步逻辑在应用层实现,和 Composer 完全无关。同理,“模型变更”指 Eloquent 模型字段增删、审计开关调整等,这些属于数据库迁移和代码逻辑范畴,composer update 升级的是包本身(如 owen-it/laravel-auditing),不会自动帮你加字段、改监听事件、重跑迁移。
- 常见错误现象:
php artisan migrate报错Base table or view not found: 1146 Table 'xxx.audits',其实是忘了执行php artisan vendor:publish --provider="OwenIt\Auditing\AuditingServiceProvider" --tag="migrations" - 升级
owen-it/laravel-auditing到新主版本(如 v14 → v15)后,Auditabletrait 的默认监听事件可能变化(比如不再默认捕获restored),需手动检查config/audit.php中的events配置项 - 若你用的是 Tymio 2.8 的日历双向同步功能,它的同步触发点在前端调用 API 或后台任务(如
php artisan tymio:sync-calendar),和 Composer 命令零关联
模型启用审计后,字段变更怎么适配
启用 Auditable 后,模型每次 save()、delete() 都会写入 audits 表。但如果你后续给模型加了新字段(比如 is_premium),审计日志默认不会记录该字段变更——除非你显式配置。
- 默认只审计
fillable字段,且不包含casts或appends中的动态属性 - 想审计特定字段,需在模型里覆盖
$auditInclude属性:protected $auditInclude = ['name', 'email', 'is_premium']; - 若字段是 JSON 类型(如
settings),审计插件默认只存 diff 的字符串,无法做结构化比对;这时建议用$auditCustomExclude排除它,再单独写逻辑处理 - 注意:修改
$auditInclude后,旧数据不会自动补录,只对后续变更生效
升级审计包时最容易被忽略的三件事
很多人只关注 composer update owen-it/laravel-auditing 是否成功,却漏掉关键衔接点:
-
config/audit.php不会自动发布——旧配置文件里的implementation或table键可能已废弃,必须手动运行php artisan vendor:publish --provider="OwenIt\Auditing\AuditingServiceProvider" --tag="config"覆盖 - 新版可能要求 PHP 8.1+ 或 Laravel 10+,但
composer outdated不会标红提示兼容性风险,得自己查 GitHub Release 页面 的Requirements小节 - 审计表
audits默认用bigIncrements,但如果你的 MySQL 表引擎是 MyISAM(已弃用),迁移会失败;此时要先改引擎为 InnoDB,再运行php artisan migrate
真正卡住人的,从来不是命令敲得对不对,而是分不清哪件事该交给 Composer,哪件事得自己写迁移、改配置、补测试。尤其当“时间轴同步”和“模型审计”混在一起时,先拆开看:同步是业务流程,审计是数据追踪,依赖管理只是让这两者能跑起来的底座而已。


















