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.