كيفية بناء سوق متعدد البائعين باستخدام Laravel

بناء سوق إلكتروني هو مشكلة بيانات.

يعتقد معظم المطورين أن الجزء الصعب هو لوحة تحكم البائع. ليس الأمر كذلك. التحدي الحقيقي يكمن في تعدد المستأجرين (multi-tenancy). يجب أن تضمن أن كل استعلام يجيب على سؤال واحد: من يملك هذه البيانات؟

إذا قمت ببناء متجر قياسي وحاولت إضافة بائعين لاحقاً، فستواجه ضرورة إعادة كتابة الكود. سيتعين عليك تمرير معرف البائع (vendor ID) عبر كل نموذج (model)، وكل استعلام، وكل عربة تسوق. إذا فاتك مرشح (filter) واحد، فسيتمكن بائع من رؤية طلبات بائع آخر. وهذا يعتبر تسريباً للبيانات.

لديك ثلاثة خيارات:

  • ابنه بنفسك: ستقوم بكتابة كل بند تحديد نطاق (scoping clause). هذا أمر مكلف ومحفوف بالمخاطر.
  • استخدم متجراً أحادي المستأجر مع إضافات: ستقوم بإضافة أعمدة البائعين إلى مخطط (schema) لم يتم تصميمه لها. سيبقى العزل هشاً.
  • استخدم أساساً متعدد المستأجرين: استخدم حزمة مثل Aimeos التي تبني العزل داخل نموذج البيانات منذ اليوم الأول.

إليك كيفية تحويل متجر واحد إلى سوق باستخدام Aimeos:

1. تثبيت الأساس

قم بتشغيل هذا الأمر للبدء: composer create-project aimeos/aimeos myshop

2. تفعيل وضع تعدد البائعين

لا تحتاج إلى إعادة كتابة قاعدة البيانات الخاصة بك. فقط قم بتغيير سطر واحد في ملف .env: SHOP_MULTISHOP=true

يقوم هذا العلم (flag) تلقائياً بتحديد نطاق كل مسار (route)، وواجهة برمجة تطبيقات (API)، ولوحة تحكم إدارية لموقع محدد. يتولى النظام عملية فصل البيانات نيابة عنك.

3. تفعيل التسجيل الذاتي

من أجل التوسع، اسمح للبائعين بالتسجيل بأنفسهم. أضف هذا إلى ملف .env: SHOP_REGISTRATION=true

يحصل البائعون الجدد على حق الوصول فقط إلى كتالوج المنتجات والطلبات والعملاء الخاصين بهم. لا يمكنهم رؤية أي شيء آخر.

لماذا ينجح هذا النهج:

ينظم Aimeos كل شيء حول "الموقع" (site). كل منتج وسعر وطلب يحمل معرف موقع (site ID). تقوم طبقة البيانات بتصفية هذا تلقائياً. لن تحتاج لكتابة "where site_id = ?" لأن النظام يقوم بذلك نيابة عنك.

يحل هذا النهج ثلاث مشكلات رئيسية:

  • الأمان: عزل البيانات هو خاصية في قاعدة البيانات، وليس مجرد جزء من الكود قد تنساه.
  • التعقيد: يمكن للبائعين إدارة منتجات معقدة مثل الاشتراكات أو الحزم دون الحاجة لتغيير المخطط (schema).
  • المدفوعات: يمكنك استخدام إضافات مثل Stripe لتقسيم المدفوعات فوراً. تأخذ المنصة عمولة ويحصل البائع على الباقي.

توقف عن بناء التمديدات البرمجية (plumbing). ابدأ في بناء سوقك الخاص.

المصدر: https://dev.to/aimeos/how-to-implement-a-multi-vendor-e-commerce-marketplace-397a