اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

يمكنك إنشاء نظام مستأجرين في لارافل بسهولة تامة مع حزمة 

composer require stancl/tenancy

حيث تمكنك هذه الحزمة من إنشاء نظام متكامل لإدارة المستأجرين في لارافل بسهولة تامة حيث توفر لك أكثر من نظام منها، إنشاء يعتمد على حقل فريد في قاعدة البيانات بالنسبة لكل مستأجر باستخدام قاعدة بيانات واحدة  أو إنشاء قاعدة بيانات لكل مستأجر حسب النطاق الخاص به مثل إذا كان لديك مستأجر و نطاقه مثلا 

test.saas-store.com

تكون قاعدة البيانات الخاصة بهذا المستأجر حسب 

/**
* Tenant database names are created like this:
* prefix + tenant_id + suffix.
*/
'prefix' => 'tenant',
'suffix' => '',

أي ممكن تكون هكذا 

tenant_test

أو بشكل أخر إذا كان لديك suffix إيضا و بالتالي تمنحك تحكم كاملا في إدارة المستأجرين و قواعد البيانات لهم و يمكنك نشر قاعدة البيانات لجميع المستأجرين من خلال الأمر التالي 

php artisan tenants:migrate 

اما بخصوص تثبيت هذه الحزمة فيكون باستخدام الأمر التالي 

composer require stancl/tenancy

ثم الأمر التالي لإنشاء الملفات الازمة لهذه الحزمة 

php artisan tenancy:install

هذا الأمر سينشئ التالي:

  • ملف التهيئة: config/tenancy.php
  • ملفات الهجرة (migrations) لجدولي tenants وdomains
  • ملف مسارات المستأجر: routes/tenant.php
  • مزود الخدمة: app/Providers/TenancyServiceProvider.php
  • 0
نشر

ذلك قائم على مفهوم Multi-tenancy بمعنى هيكلية برمجية تسمح بتشغيل نسخة واحدة من التطبيق لخدمة عدة عملاء مع عزل بيانات كل منهم.

من حيث المفهوم الأمر يعتمد على إعداد قاعدة البيانات وهناك طريقتين، الأولى نهج قاعدة البيانات المنفصلة كالتالي:

  • إنشاء قاعدة بيانات مركزية تحتفظ بمعلومات المستأجرين
  • إنشاء قاعدة بيانات منفصلة لكل مستأجر
  • تبديل الاتصال بقاعدة البيانات حسب المستأجر الحالي

والثانية نهج الجدول المشترك وهي أسهل بإنشاء جدول مشترك بإضافة عمود tenant_id إلى كل جدول يحتاج إلى عزل البيانات وتطبيق Global Scope لتصفية البيانات تلقائياً حسب المستأجر الحالي.

ويوجد مكتبة توفر كلا الطريقتين بالإضافة إلى تسهيل باقي الخطوات وهي Tenancy for Laravel ستجد تفصيل بخصوص طريقة التثبيت في المستند الرسمي.

عامًة للتبسيط، ستقوم بتثبيت المكتبة:

composer require stancl/tenancy

ثم التالي لإنشاء ملفات التهجير والإعدادات:

php artisan tenancy:install

ثم التهجير:

php artisan migrate

ثم ضع السطر التالي في ملف bootstrap/providers.php:

return [
    App\Providers\AppServiceProvider::class,
    App\Providers\TenancyServiceProvider::class, // <-- هنا
];

ثم قم بإنشاء نموذج في app/Models/Tenant.php:

php artisan make:model Tenant

ثم:

<?php

namespace App\Models;

use Stancl\Tenancy\Database\Models\Tenant as BaseTenant;
use Stancl\Tenancy\Contracts\TenantWithDatabase;
use Stancl\Tenancy\Database\Concerns\HasDatabase;
use Stancl\Tenancy\Database\Concerns\HasDomains;

class Tenant extends BaseTenant implements TenantWithDatabase
{
    use HasDatabase, HasDomains;
}

ثم في config/tenancy.php ضع النموذج:

'tenant_model' => \App\Models\Tenant::class,

ثم في ملف routes/web.php أو api.php يجب إنشاء مسار مركزي:

foreach (config('tenancy.central_domains') as $domain) {
    Route::domain($domain)->group(function () {
        // ضع المسارات هنا
    });
}

ثم إنشاء دومين مركزي في config/tenancy.php ضع التالي:

'central_domains' => [
    'saas.test', //اكتب اسم الدومين المحلي الخاص ببيئة التطوير
],

وستجد باقي الخطوات هنا:

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...