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 支持需要两个此平台默认未安装的东西:
- 您服务器上的
mongodbPHP 扩展 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(或将其重新设置为空),每个模型将在下一个请求中返回到默认连接 — 不需要迁移来关闭此功能。

