Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

कैसे एकाधिक डेटाबेस के साथ एक बहु किरायेदार आवेदन बनाने के लिए Laravel 5 में आर्केस्ट्रा / किरायेदारी का उपयोग करने के लिए?

+1 से @morphatic उत्तर, यह अधिकांश चीजों पर सटीक बैठता है।

माइग्रेशन

अपने मुख्य डेटाबेस के लिए आपको डिफ़ॉल्ट database/migration . का उपयोग करने में सक्षम होना चाहिए और php artisan make:migration . का उपयोग करें और php artisan migrate

हालांकि Tenanti "ड्राइवर" कॉन्फ़िगरेशन के तहत सेट किए गए माइग्रेशन पथ का उपयोग करेगा। उदा:

'path' => database_path('tenanti/user'),

इस मामले में माइग्रेशन database/tenanti/user . से बनाया/माइग्रेट किया जाएगा (आप अन्य फ़ोल्डर चुन सकते हैं और वह उस फ़ोल्डर का उपयोग करेगा)। एक बार जब आप इसे सेट कर लेते हैं तो आप उपयोगकर्ता टैनेंट के लिए php artisan tenanti:make user create_blogs_table के माध्यम से नई माइग्रेशन फ़ाइल बना सकते हैं। (उदाहरण के तौर पर) और php artisan tenanti:migrate user . के माध्यम से माइग्रेशन चलाएँ (लारावेल माइग्रेशन कमांड और टेनंती के बीच समानता देखें?)

ड्राइवर

ड्राइवर सिर्फ एक किरायेदार का समूह है, आप शायद इसे उपयोगकर्ताओं, कंपनियों या टीम आदि द्वारा समूहित कर सकते हैं। और संभावना है कि आपको प्रति प्रोजेक्ट एक से अधिक प्रकार के समूह की आवश्यकता हो सकती है, अन्यथा अधिकांश समय आप केवल एकल का उपयोग कर रहे हैं " समूह" या "चालक"।

प्रमाणीकरण या डीबी तक पहुंच

सबसे पहले, आपको यह विचार करने की आवश्यकता है कि आप प्रत्येक किरायेदार को अलग करने की योजना कैसे बना रहे हैं। अधिकांश समय मैंने देखा होगा कि लोग सबडोमेन का विकल्प चुनते हैं। तो इस मामले में आपको मिडलवेयर का उपयोग करके यह जांचना होगा कि क्या उपडोमेन किसी उपयोगकर्ता (मुख्य डेटाबेस को क्वेरी करके) से संबंधित है और फिर उस डेटाबेस से कनेक्ट करें जो उपयोगकर्ता से संबंधित है।

Tenanti प्रक्रिया के उस हिस्से का प्रबंधन नहीं करता है, क्योंकि उस पहलू पर हर किसी की अलग शैली होती है, लेकिन हम आधार डेटाबेस कॉन्फ़िगरेशन से आपके डेटाबेस टैनेंट से गतिशील रूप से कनेक्ट करने के लिए एक कोड प्रदान करते हैं।

मान लें कि आपके पास निम्न कॉन्फ़िगरेशन है:

<?php

return [
    'fetch' => PDO::FETCH_CLASS,
    'default' => 'primary',
    'connections' => [
        'primary' => [
            //
        ],
        'tenants' => [
                'driver'    => 'mysql',
                'host'      => 'dbhost',     // for user with id=1
                'username'  => 'dbusername', // for user with id=1
                'password'  => 'dbpassword', // for user with id=1
                'charset'   => 'utf8',
                'collation' => 'utf8_unicode_ci',
                'prefix'    => '',
                'strict'    => false,
            ],
       ],
    ],
    'migrations' => 'migrations',
    'redis' => [ ... ],
];

आप https://github.com/orchestral/ में उपलब्ध चरण का अनुसरण कर सकते हैं टेनेंटी#मल्टी-डेटाबेस-कनेक्शन-सेटअप और निम्न कोड जोड़ें।

<?php namespace App\Providers;

use Orchestra\Support\Facades\Tenanti;

class AppServiceProvider extends ServiceProvider
{
    public function boot()
    {
        Tenanti::setupMultiDatabase('tenants', function (User $entity, array $template) {
            $template['database'] = "tenant_{$entity->getKey()}";

            return $template;
        });
    }
}

यह सुनिश्चित करेगा कि आप tenant_1 . का उपयोग कर रहे हैं उपयोगकर्ता =1 के लिए डेटाबेस, tenant_2 उपयोगकर्ता के लिए डेटाबेस =2 वगैरह।

तो Tenanti कैसे पता लगाता है कि कौन सा उपयोगकर्ता सक्रिय है?

यहीं पर आपको अपने मिडलवेयर में लॉजिक जोड़ने की जरूरत है।

$user = App\User::whereSubdomain($request->route()->parameter('tenant'))->first();

Tenanti::driver('user')->asDefaultDatabase($user, 'tenants_{id}');


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्या मैं ऑनलाइन लोगों की संख्या निर्धारित करने के लिए सत्रों की गणना कर सकता हूं?

  2. चेतावनी:mysql_result() [function.mysql-result]:लाइन 11 पर प्रोफ़ाइल.php में MySQL परिणाम अनुक्रमणिका 5 पर पंक्ति 0 पर जाने में असमर्थ

  3. mysql के अंदर सरणी के लिए इंपोड का उपयोग करना जहां खंड में

  4. मैं एक ऐसी वस्तु को खोजने के लिए SQL क्वेरी की संरचना कैसे करूं जो दो विशिष्ट अन्य वस्तुओं का जनक है?

  5. एयरफ्लो mysql to gcp डैग एरर