بيانات تاريخية على MongoDB
بشكل افتراضي، تعيش كل جدول على اتصال التطبيق الرئيسي الخاص بك (PostgreSQL أو MySQL) — لا شيء في هذه الميزة يغير ذلك ما لم تقم بالاختيار. يمكن للمتاجر المستضافة ذاتياً التي تحتوي على الكثير من التاريخ القابل للإضافة فقط (مدخلات سجل النشاط، نصوص المحادثات، تاريخ بريد CRM) نقل تلك الجداول فقط إلى اتصال منفصل، بما في ذلك MongoDB، دون لمس أي شيء آخر.
ما الذي يتم نقله
- سجل النشاط — جدول
activity_log(كل إدخال تدقيق لإنشاء/تحديث/حذف/تسجيل دخول) - رسائل الدردشة — جدول
msg_messagesلوحدة المراسلة - تاريخ بريد CRM — جداول
crm_email_messagesوcrm_email_events
كل شيء آخر — الطلبات، المنتجات، العملاء، المحاسبة — يبقى دائماً على اتصالك الأساسي. هذه خطوة مستهدفة لجداول التاريخ ذات الحجم الكبير، والتي نادراً ما يتم الانضمام إليها فقط.
الخيار أ: اتصال SQL آخر
وجه التاريخ إلى أي اتصال تم تعريفه بالفعل في config/database.php (على سبيل المثال، قاعدة بيانات Postgres الثانية المخصصة للسجلات):
HISTORICAL_DB_CONNECTION=pgsql_history
هذا يعمل على الفور دون حزم إضافية — إنه Eloquent عادي على اتصال SQL عادي.
الخيار ب: 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;
}
لأن وحدة التحكم في المتجر تأتي كمصدر كامل بموجب الترخيص، فإن إضافة سطر واحد هذه هي تخصيص عادي لنسختك الخاصة — ليست تصحيحًا من البائع.
كيفية التراجع
قم بإلغاء تعيين HISTORICAL_DB_CONNECTION (أو قم بإعادته إلى فارغ) وكل نموذج يعود إلى الاتصال الافتراضي في الطلب التالي — لا حاجة لترحيل لإيقاف الميزة.

