تعد حزمة `archtechx/tenancy` أداة مرنة وقوية لتنفيذ الإيجارات المتعددة في تطبيقات Laravel. فيما يلي بعض الميزات والاختلافات الرئيسية مقارنة بالحزم الأخرى مثل `spatie/laravel-multitenancy`:
الميزات الرئيسية لـ `archtechx/tenancy`:
1. الإيجار المتعدد التلقائي: تقوم الحزمة تلقائيًا بإعداد الإيجار المتعدد دون الحاجة إلى تغييرات كبيرة في التعليمات البرمجية. يتعامل مع اتصالات قاعدة البيانات، وذاكرة التخزين المؤقت، وأنظمة الملفات، وقوائم الانتظار، ومخازن Redis لكل مستأجر[3].
2. الهندسة القائمة على الأحداث: تستخدم الحزمة بنية تعتمد على الأحداث، مما يسمح بالتخصيص والمرونة في التعامل مع الأحداث المتعلقة بالإيجار[3].
3. استئجار قاعدة بيانات فردية أو متعددة: وهو يدعم كلاً من نماذج الاستئجار لقاعدة بيانات واحدة ومتعددة قواعد البيانات. بالنسبة لاستئجار قاعدة بيانات متعددة، فإنه يوفر سمات نموذجية لتحديد نطاق النماذج للمستأجر الحالي[3].
4. التكامل مع الحزم الأخرى: تتكامل الحزمة بسلاسة مع حزم Laravel الأخرى، بما في ذلك Laravel Nova، والتي يمكن استخدامها لإدارة موارد المستأجر[3].
5. قابلية الاختبار: تم تصميم الحزمة لتكون قابلة للاختبار بشكل كبير، مما يجعل من السهل التأكد من اختبار تنفيذ الإيجارات المتعددة بدقة[3].
6. التخصيص: توفر الحزمة خيارات تخصيص واسعة النطاق من خلال بنيتها القائمة على الأحداث وسمات النموذج، مما يسمح للمطورين بتخصيصها وفقًا لاحتياجاتهم المحددة[3].
التثبيت والبدء السريع:
1. التثبيت: يمكن تثبيت الحزمة باستخدام Composer: `composer require stancl/tenancy`.
2. البدء السريع: تتضمن الحزمة برنامجًا تعليميًا للبدء السريع يرشدك خلال إعداد إيجار قاعدة بيانات متعددة وتحديد المجال. هذا البرنامج التعليمي متاح على صفحة وثائق الحزمة[4].
المقارنة مع `spatie/laravel-multitenancy`:
- الإعداد التلقائي: توفر كلا الحزمتين خيارات الإعداد التلقائي، ولكن `archtechx/tenancy` أكثر شمولاً في إعداده التلقائي، حيث يتعامل مع المزيد من جوانب الإيجار المتعدد خارج الصندوق.
- الهندسة القائمة على الأحداث: يستخدم `archtechx/tenancy` بنية تعتمد على الأحداث، مما يوفر المزيد من المرونة وخيارات التخصيص مقارنة بـ `spatie/laravel-multitenancy`.
- التكامل مع الحزم الأخرى: تتكامل كلتا الحزمتين جيدًا مع حزم Laravel الأخرى، ولكن `archtechx/tenancy` أكثر وضوحًا في دعمه لحزم مثل Laravel Nova.
- قابلية الاختبار: تم تصميم كلتا الحزمتين لتكونا قابلتين للاختبار، ولكن `archtechx/tenancy` يركز بشكل أكبر على قابلية الاختبار ويوفر المزيد من الأدوات لضمان إجراء اختبار شامل.
باختصار، يقدم `archtechx/tenancy` حلاً أكثر شمولاً ومرونة للإيجارات المتعددة في Laravel، مع خيارات تخصيص واسعة النطاق وتكامل أفضل مع الحزم الأخرى. ومع ذلك، فإن الاختيار بين الحزمتين يعتمد في النهاية على المتطلبات والاحتياجات المحددة لمشروعك.
اقتباسات:[1] https://stackoverflow.com/questions/74005556/archtechx-tenancy-vs-spatie-laravel-multitenancy
[2] https://github.com/archtechx/tenancy/actions
[3] https://tenancyforlaravel.com
[4] https://tenancyforlaravel.com/docs/v3/quickstart/
[5] https://github.com/stancl/tenancy/releases