اتصال به چند دیتابیس با داده های متفاوت در لاراول

اتصال به چند دیتابیس با داده های متفاوت در لاراول

در این مطلب قصد داریم نحوه اتصال به دو دیتابیس متفاوت را برای شما توضیح دهیم.  فرض کنید ما دو دیتابیس mysql متفاوت داریم که قصد داریم در جاهای متفاوت پروژه از این دو دیتابیس استفاده نماییم.

فریم وورک لاراول قابلیت های بسیاری را برای توسعه دهندگان فراهم کرده است که با استفاده از این قابلیت ها و امکانات شما می توانید به راحتی و با سرعت بالاتر نرم افزار خود را توسعه و راه اندازی کند.

دراین فریم وورک شما می توانید بصورت همزمان از دیتابیس های متفاوتی همچون mysql, redis, mongo و... استفاده نمایید.

در این مطلب قصد داریم نحوه اتصال به دو دیتابیس متفاوت را برای شما توضیح دهیم. 

فرض کنید ما دو دیتابیس mysql متفاوت داریم که قصد داریم در جاهای متفاوت پروژه از این دو دیتابیس استفاده نماییم.

در داخل فایل app / config / database.php شما می توانید انواع اتصال های خود را تعریف کنید. در حقیقت شما میتوانید هر چند ارتباطی که دوست دارید در نرم افزار خود به آنها دسترسی داشته باشید در این فایل تعریف نمایید.

 

برای نمونه، اگر برنامه شما باید داده ها رو از 2 پایگاه داده MySQL بخواند، می توانید آنها را به صورت جداگانه تعریف کنید:

    'connections' => [
	
		'mysql' => [
			'driver' => 'mysql',
			'host' => env('DB_HOST', '127.0.0.1'),
			'port' => env('DB_PORT', '3306'),
			'database' => env('DB_DATABASE', 'forge'),
			'username' => env('DB_USERNAME', 'forge'),
			'password' => env('DB_PASSWORD', ''),
			'unix_socket' => env('DB_SOCKET', ''),
			'charset' => 'utf8mb4',
			'collation' => 'utf8mb4_unicode_ci',
			'prefix' => '',
			'prefix_indexes' => true,
			'strict' => true,
			'engine' => null,
			'options' => extension_loaded('pdo_mysql') ? array_filter([
																		  PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
																	  ]) : [],
		],
		'mysql2' => [
			'driver' => 'mysql',
			'host' => '127.0.0.1',
			'port' => '3306',
			'database' => 'test',
			'username' => 'root',
			'password' => '',
			'unix_socket' => env('DB_SOCKET', ''),
			'charset' => 'utf8mb4',
			'collation' => 'utf8mb4_unicode_ci',
			'prefix' => '',
			'prefix_indexes' => true,
			'strict' => true,
			'engine' => null,
			'options' => extension_loaded('pdo_mysql') ? array_filter([
																		  PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
																	  ]) : [],
		],

برنامه ما از اتصال پیش فرض mysql استفاده خواهد کرد مگر اینکه ما تعیین کنیم که میخواهیم از اتصال مربوط به mysql2 استفاده نماییم.

حال چگونه از اتصال دوم در پروژه خود استفاده نماییم؟

چند راه برای اینکار وجود دارد.

 

هنگام ایجاد جدول:

شما میتوانید با استفاده از متد connection() به راحتی در Schema کانکشن خود را بصورت زیر مشخص نمایید:

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

 

query:

همانند مرحله قبل شما میتوانید از متد connection() برای کئوری زدن در بخش های متفاوت استفاده نمایید:

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

 

مدل:

شما همچنین می توانید به راحتی کانکشن مدل خود را معرفی کنید:

<?php

class SomeModel extends Eloquent {

    protected $connection = 'mysql2';

}

 

استفاده از متد setConnection :

شما همچنین میتوانید کانکشن دیتابیس خود را بصورت زیر در صورت نیاز معرفی کنید:

<?php

class SomeController extends BaseController {

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

        $someModel->setConnection('mysql2');

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

        return $something;
    }

}

 

نکته: در مورد اتصال به دیتابیس های متفاوت کمی دقت کنید و سعی کنید در صورت عدم نیاز ضروری به اینکار، حتما از یک دیتابیس استفاده نمایید.

 

 

امیدوارم از این مطلب لذت برده باشید.

در صورتی که روش دیگری برای انجام این کار سراغ دارید از بخش نظرات ارسال نمایید.

 


دسته بندی ها:

لاراول

ارسال نظر

برای اطلاع از پاسخ به نظر شما می توانید ایمیل یا شماره موبایل خود را وارد نمایید. *

ایمیل و شماره موبایل شما کاملا مخفی خواهد ماند و در سایت نمایش داده نخواهد شد. *

اگر نظری برای این مطلب ارسال شد از طریق ایمیل مرا اطلاع بده!
لسیت نظرات
هنوز برای این مطلب نظری ارسال نشده است!