Merhaba,
Denemeden aklımdan yazarak fikir vermek istiyorum. Deneyip sonucunu söylerseniz belki başka yönlendirme de yapabilirim. Uzun süredir 4 serisini kullanmadığım için belki fikrim işine yaramayabilir haberiniz olsun.
Database config içerisinde;
'mysql99' => [
'driver' => 'mysql',
'host' => 'XXX_host',
'port' => 3306,
'database' => 'XXX_db',
'username' => 'XXX_user',
'password' => 'XXX_pass',
'charset' => 'utf8',
'collation' => 'utf8_general_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
böyle bir db config oluşturun. Bunu dizi çalışma sırasında değiştirileceğimiz için bilgilerinin doğru olmasına gerek yok.
Normalde $users = DB::connection('foo')->select(...); ile db connection bilgisini değiştirip farklı veritabanından veri çekilebiliyor. Bu bilgiden yola çıkarak eğer connection değişmeden önce connection dizi bilgilerini değiştirirsek ihtiyacımızı karşılarız.
$db_config = Config::get('database.mysql99');
$db_config['host'] = 'MÜŞTERİNİN HOST BİLGİSİ';
$db_config['database'] = 'MÜŞTERİNİN DB BİLGİSİ';
$db_config['username'] = 'MÜŞTERİNİN USER BİLGİSİ';
$db_config['password'] = 'MÜŞTERİNİN PASSWORD BİLGİSİ';
// Bilgileri aldık ve güncelledik. Daha kısa kodlar ile yazabilirdik ama uzun olması şu an için daha hayırlı. Başka az tecrübeli arkadaşların da ihtiyacı olursa okurken zorlanmasınlar.
Config::set('database.mysql99', $db_config);
// Oluşan yeni bilgileri çalışma zamanında config içerisinde değiştirdik
DB::setDefaultConnection('mysql99');
Bu yöntem ile veritabanının bağlantısını değiştirebilirsiniz. Bunu yaparsanız eğer tüm sorgular yeni veritabanına gidecek. Eğer sitenin kullanıcının istekleri dışındaki verilerini (title, footer bilgileri gibi) sitenin kendinize özel veritabanından çekiyorsanız kesinlikle bunu kullanmayın.
$users = DB::connection('mysql99')->select(...);
//Bu şekilde sadece o sorgunun bağlantı bilgisini değiştirerek istenilen veri çekilebilir. Diğer tüm istekler aktif veritabanı bağlantısı üzerinden gerçekleşeceği için herhangi bir sıkıntı olmaz.
Tekrar hatırlatayım. Aynen bu şekilde denemedim çünkü ihtiyacım olmadı. Laravel dökümanından ve kendi mantığımdan yararlanarak böyle çözüm ürettim. Şimdilik bir hata göremiyorum.
Eğer tam sonuç elde edebilirseniz kodu paylaşıp diğer ihtiyacı olanlar için de hem ön bilgi hem kaynak kod sağlamış olursunuz.
Değişiklik Sebebi: İmla.