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
一个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(在根suggest下列出在composer.json中)
如果没有安装扩展和包,设置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(或将其设置为空),每个模型将在下一个请求中返回到默认连接——关闭此功能无需迁移。

