One self-hosted console to run your entire business — commerce, ERP, HRM, CRM & manufacturing

MongoDB上的历史数据

MongoDB上的历史数据

默认情况下,每个表都位于您应用的主连接(PostgreSQL或MySQL)上——除非您选择加入,否则此功能不会改变。自托管的商店拥有大量仅附加历史记录(活动日志条目、聊天记录、CRM邮件历史)可以将这些表移动到单独的连接,包括MongoDB,而不触及其他内容。

移动的内容

  • 活动日志 — activity_log表(每个创建/更新/删除/登录审计条目)
  • 聊天消息 — 消息模块的msg_messages表
  • CRM邮件历史 — crm_email_messages和crm_email_events表

其他所有内容——订单、产品、客户、会计——始终保留在您的主连接上。这是针对高容量、很少连接的历史表的特定移动。

选项A:另一个SQL连接

将历史指向config/database.php中已定义的任何连接(例如,专用于日志的第二个Postgres数据库):

HISTORICAL_DB_CONNECTION=pgsql_history

这可以立即工作,无需额外包——它是在普通SQL连接上的普通Eloquent。

选项B:MongoDB

A mongodb 连接模板已在 config/database.php 中发货,但在您选择加入之前,它是无效的:

HISTORICAL_DB_CONNECTION=mongodb
MONGODB_URI=mongodb://user:password@host:27017
MONGODB_DATABASE=storeconsole_history

MongoDB 支持需要两个此平台默认未安装的东西:

  • 您服务器上的 mongodb PHP 扩展
  • composer require mongodb/laravel-mongodb (在根 composer.json 的 suggest 下列出)

如果未安装扩展和包,设置 HISTORICAL_DB_CONNECTION=mongodb 会被安全忽略 — 每个模型都会回退到默认连接,应用程序启动并运行与之前完全相同。

完整的 MongoDB 模型支持

一旦安装了 mongodb/laravel-mongodb,仅通过切换连接即可获得对 Mongo 集合的查询构建器级访问。要获得完整的 Eloquent 支持(BSON 类型转换、ObjectId 主键、嵌入文档),还需将包的 MongoDB\Laravel\Eloquent\DocumentModel 特性添加到模型中,连同此平台在历史模型上已提供的连接切换特性:

use StoreConsole\PlatformKit\Traits\UsesHistoricalConnection;
use MongoDB\Laravel\Eloquent\DocumentModel;

class Activity extends SpatieActivity
{
    use UsesHistoricalConnection;
    use DocumentModel;
}

因为 Store Console 根据许可证提供完整源代码,这一行添加是您自己副本的正常自定义 — 不是供应商补丁。

如何恢复

取消设置 HISTORICAL_DB_CONNECTION(或将其重新设置为空),每个模型将在下一个请求中返回到默认连接 — 不需要迁移来关闭此功能。

Last updated: 10/5/2026