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

Laravel में एकाधिक डेटाबेस का उपयोग कैसे करें

.env का इस्तेमाल करना>=5.0 (5.5 पर परीक्षण किया गया) (8 पर काम करता है )

.env में

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=database1
DB_USERNAME=root
DB_PASSWORD=secret

DB_CONNECTION_SECOND=mysql
DB_HOST_SECOND=127.0.0.1
DB_PORT_SECOND=3306
DB_DATABASE_SECOND=database2
DB_USERNAME_SECOND=root
DB_PASSWORD_SECOND=secret

config/database.php में

'mysql' => [
    'driver'    => env('DB_CONNECTION'),
    'host'      => env('DB_HOST'),
    'port'      => env('DB_PORT'),
    'database'  => env('DB_DATABASE'),
    'username'  => env('DB_USERNAME'),
    'password'  => env('DB_PASSWORD'),
],

'mysql2' => [
    'driver'    => env('DB_CONNECTION_SECOND'),
    'host'      => env('DB_HOST_SECOND'),
    'port'      => env('DB_PORT_SECOND'),
    'database'  => env('DB_DATABASE_SECOND'),
    'username'  => env('DB_USERNAME_SECOND'),
    'password'  => env('DB_PASSWORD_SECOND'),
],
<ब्लॉकक्वॉट>

नोट: mysql2 . में यदि DB_username और DB_password समान हैं, तो आप env('DB_USERNAME') का उपयोग कर सकते हैं जो .env . में मिलता है पहली कुछ पंक्तियाँ।

बिना .env . के <5.0

कनेक्शन परिभाषित करें

<ब्लॉकक्वॉट>

app/config/database.php

return array(

    'default' => 'mysql',

    'connections' => array(

        # Primary/Default database connection
        'mysql' => array(
            'driver'    => 'mysql',
            'host'      => '127.0.0.1',
            'database'  => 'database1',
            'username'  => 'root',
            'password'  => 'secret'
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
        ),

        # Secondary database connection
        'mysql2' => array(
            'driver'    => 'mysql',
            'host'      => '127.0.0.1',
            'database'  => 'database2',
            'username'  => 'root',
            'password'  => 'secret'
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
        ),
    ),
);

स्कीमा

यह निर्दिष्ट करने के लिए कि किस कनेक्शन का उपयोग करना है, बस connection() चलाएं विधि

Schema::connection('mysql2')->create('some_table', function($table)
{
    $table->increments('id'):
});

क्वेरी निर्माता

$users = DB::connection('mysql2')->select(...);

सुवक्ता

$कनेक्शन सेट करें आपके मॉडल में परिवर्तनशील

class SomeModel extends Eloquent {

    protected $connection = 'mysql2';

}

आप रनटाइम पर कनेक्शन को setConnection . के माध्यम से भी परिभाषित कर सकते हैं विधि या चालू स्थिर विधि:

class SomeController extends BaseController {

    public function someMethod()
    {
        $someModel = new SomeModel;

        $someModel->setConnection('mysql2'); // non-static method

        $something = $someModel->find(1);

        $something = SomeModel::on('mysql2')->find(1); // static method

        return $something;
    }

}
<ब्लॉकक्वॉट>

नोट डेटाबेस में तालिकाओं के साथ संबंध बनाने के प्रयास में सावधान रहें! ऐसा करना संभव है, लेकिन यह कुछ चेतावनियों के साथ आ सकता है और यह इस बात पर निर्भर करता है कि आपके पास कौन सा डेटाबेस और/या डेटाबेस सेटिंग्स हैं।

लारवेल डॉक्स से

एकाधिक डेटाबेस कनेक्शन का उपयोग करना

एकाधिक कनेक्शन का उपयोग करते समय, आप प्रत्येक कनेक्शन तक पहुंच सकते हैं DB . पर कनेक्शन विधि के माध्यम से मुखौटा। नाम कनेक्शन को पास कर दिया गया है विधि आपके config/database.php . में सूचीबद्ध कनेक्शनों में से एक के अनुरूप होनी चाहिए कॉन्फ़िगरेशन फ़ाइल:

$users = DB::connection('foo')->select(...);

आप कनेक्शन इंस्टेंस पर getPdo विधि का उपयोग करके कच्चे, अंतर्निहित PDO इंस्टेंस तक भी पहुँच सकते हैं:

$pdo = DB::connection()->getPdo();

उपयोगी लिंक

  1. Laravel 5 एकाधिक डेटाबेस कनेक्शन laracasts से .com
  2. लारवेल में कई डेटाबेस कनेक्ट करें tutsnare.com
  3. Laravel में एक से अधिक DB कनेक्शंस fideloper.com से


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. LIKE क्लॉज होने पर इंडेक्सिंग का सबसे अच्छा प्रकार

  2. MySQL बड़े डेटाबेस से डुप्लिकेट को जल्दी से हटा देता है

  3. MySQL में आवृत्ति से पर्सेंटाइल की गणना करें

  4. MySQL रिमोट एक्सेस के लिए एक SSH टनल बनाएं

  5. तैयार कथन के साथ MySQL पर LIMIT कीवर्ड