blackcoffee yazdı
Şuan da Middleware de sürekli her işlem yaparken config ile setleme işlemi yapıyorum fakat bu yöntem pek sağlıklı gelmedi.
Neden sağlıklı olmadığını düşünüyorsunuz? Bana göre uygun bir yol. Middleware kullanmak istemiyorsanız \App\Providers\AppServiceProvider::register() yöntemi içerisinde oturum kontrolü yapıp Config::set() işlemini orada da yapabilirsiniz.
Öteki türlü yeni bir DatabaseManager sınıfını extend eden kendi DatabaseManager sınıfınızı oluşturacaksınız, örneğin MyDatabaseManager, ama içerisindeki configi okuyan bölümü yada connection yöntemini kendinize göre değiştireceksiniz: önce oturumu kontrol edecek, oturumda veritabanı bilgisi varsa onu kullanacak, yoksa standart config ile devam edecek. Daha sonra container içerisine db ismi ile singleton olarak MyDatabaseManager sınıfını bind edeceksiniz:
// \App\Providers\AppServiceProvider::register() içerisinde
$this->app->singleton('db', function ($app) {
return new MyDatabaseManager($app, $app['db.factory']);
});
gibi.
Kendi MyDatabaseManager sınıfınız için ise vendor/laravel/framework/src/Illuminate/Database/DatabaseManager.php bu dosyayı okuyun.
Teorik konuşuyorum, denemedim ya da daha önce kullanmadım (kullanma gereği de hissetmedim), kaynak koddan hareketle oluşturdum, bilginize.