Laravel Çoklu Veritabanı Bağlantısı: Adım Adım Kılavuz (Multi Database)

Laravel'de çoklu veritabanı bağlantısı kurmak oldukça yaygın bir gereksinimdir ve Laravel'in sunduğu yapılar bunu oldukça kolaylaştırır. İşte adım adım bir kılavuz:

1. Veritabanı Bağlantılarını Tanımlama:

`config/database.php` dosyasına gidin ve birden fazla veritabanı bağlantısı tanımlayın. Örneğin, `connections` dizisine ekleyebilirsiniz:

'connections' => [

    'mysql' => [
        'driver'    => 'mysql',
        'host'      => env('DB_HOST', '127.0.0.1'),
        'database'  => env('DB_DATABASE', 'forge'),
        'username'  => env('DB_USERNAME', 'forge'),
        'password'  => env('DB_PASSWORD', ''),
        'charset'   => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix'    => '',
        'strict'    => true,
        'engine'    => null,
    ],

    'mysql2' => [
        'driver'    => 'mysql',
        'host'      => env('DB_HOST_SECONDARY', '127.0.0.1'),
        'database'  => env('DB_DATABASE_SECONDARY', 'forge'),
        'username'  => env('DB_USERNAME_SECONDARY', 'forge'),
        'password'  => env('DB_PASSWORD_SECONDARY', ''),
        'charset'   => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix'    => '',
        'strict'    => true,
        'engine'    => null,
    ],

],

2. Çevresel Değişkenleri Ayarlama:

`.env` dosyanıza, yeni veritabanı bağlantıları için gerekli olan çevresel değişkenleri ekleyin:

DB_HOST_SECONDARY=127.0.0.1
DB_DATABASE_SECONDARY=database_name
DB_USERNAME_SECONDARY=database_username
DB_PASSWORD_SECONDARY=database_password

3. Model İçinde Bağlantıyı Belirtme:

Modelinizde, hangi bağlantıyı kullanacağını belirtmek için `$connection` özelliğini tanımlayın:

namespace App;

use Illuminate\Database\Eloquent\Model;

class SecondaryDatabaseModel extends Model
{
    protected $connection = 'mysql2';
}

Bu örnek, `mysql2` bağlantısını kullanarak veritabanına erişecektir.

4. Çoklu Veritabanı Kullanımı:

Artık farklı veritabanlarına erişmek için hazırsınız. İşlem yapmak istediğiniz veritabanına göre modelinizi seçin veya bağlantıyı belirtin.

5. Migration ve Seeder'ları Ayarlama:

İlk veritabanı bağlantısı için normal migration ve seeder'ları kullanabilirsiniz. Ancak, ikinci bir veritabanı için migration ve seeder'ları başka bir şekilde ayarlamak gerekebilir. Örneğin, migration dosyalarının ve seeder'ların yerlerini belirtmek için --path seçeneğini kullanabilirsiniz:

php artisan migrate --path=database/migrations/secondary
php artisan db:seed --class=SecondaryDatabaseSeeder

6. İkincil Bağlantı İçin Query Yapma:

İkincil veritabanına erişmek için query yaparken, ilgili modeli kullanırken veya doğrudan bağlantıyı belirterek query yapabilirsiniz:

// Model kullanarak:
$records = SecondaryDatabaseModel::where('column', 'value')->get();

// Doğrudan bağlantı belirterek:
$records = DB::connection('mysql2')->table('table_name')->where('column', 'value')->get();

7. Birden Fazla Veritabanı Kullanımı:

İhtiyaç duyduğunuz kadar çok sayıda veritabanı bağlantısı tanımlayabilirsiniz. Yalnızca config/database.php dosyasına yeni bir bağlantı ekleyin ve .env dosyasına ilgili çevresel değişkenleri tanımlayabilirsiniz.