aslinda bir tenant in birden fazla kullanicisi olabilecek, ondan dolayi middleware den onceki yapiyi ayrica kurgulayacagim.
Ama ben ogrenmek istedigim seyi ogrendim sanirim.
1 - kullanici main_db deki veriler ile giris yapar, bilgiler dogruysa main_db deki kullaniciya atanan connection_alias bilgisi geri doner.
2 - Bundan sonra
Route::middleware(['auth', 'tenant.connection'])->group(function () {
//...
});
icerisine ekledigim butun controllerlardan yapilan db isteklerinde
class TenantConnection
{
public function handle(Request $request, Closure $next): Response
{
config([
'database.default' => $request->user()->dbconnection,
]);
return $next($request);
}
}
database.default' a gelen connection aliasini atar.
3 - bu saatten sonra servislerde, controllerda, repository vb. yaptigim tum veritabani islemlerinde (relationshipler de dahil) kullaniciya atanan veritabani uzerinden yapilir.
4 - bazi yerlerde main_db den sorgu yapmak istersem de DB:connection ile isimi cozebilirim.
dogru anlamismiyim hocam?
birde $request->user()->dbconnection bunun yerine session da tutmak mantikli olur mu hocam? bana db alias degeri 1 kere gelecek ya giris yaptiktan sonra tekrar request degeri gelecek mi? yani bu saglikli bir cozum mu?