Selamlar şuan halı hazırda çalışan crud işlemlerin olduğu login olabildiğin bir sistem mevcut tek veritabanı uzerınden yürüyo işlemler ama şöyle bi geliştirme yapmak istiyorum sisteme birden fazla şirket kayıt olabilir ve o şirketlerın kendı dataları tutuluyor guvenlık amacıyla kullanıcı login olduktan sonra onu farklı bir veritabanına yönlendırmek istiyorum ve kendı veritabanına kayıtları eklıcek aynı tablolar o verıtabanındada olcak ve route yönlendırmelerı farklı şekilde görülcek bunu nasıl yapabilirim fikir verirseniz şimdiden teşekkür ederim
Çoklu Veritabanı Yapı
fatkocc Önce şu konuyu inceleyin: https://laravel.gen.tr/d/8590-tenat-ve-multi-tenant
- En İyi Yanıtfatkocc tarafından
Bu şekilde olabilir diye düşünüyorum ama kesin bir deneme yapmadığım için bir şey diyemiyorum.
Schema::table('users', function (Blueprint $table) {
$table->string('database_name')->nullable();
});
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\DB;
class DynamicDatabaseConnection
{
public function handle($request, Closure $next)
{
if (auth()->check()) {
$databaseName = auth()->user()->database_name;
if ($databaseName) {
Config::set('database.connections.dynamic_mysql', [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'database' => $databaseName,
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
]);
DB::setDefaultConnection('dynamic_mysql');
}
}
return $next($request);
}
}
mgsmus teşekkürler hocam öncelikle bunu inceledim istek bu şekilde maliyet kısmıyla ben ilgilenmıyorum aslında müşteri bazlı veritabanından çok uygulamayı alan her şirket tabanında yenı veritabanı oluşmalı sadece yapıyı kafamda oluşturamadım route ve veritabanı mantıgını statik bişey yapmadan dinamik şekilde ilerletmek istiyorum
- Düzenlendi
fatkocc
Böyle denenebilir belki
use Illuminate\Support\Facades\Route;
class RouteServiceProvider extends ServiceProvider
{
public function map()
{
$this->mapWebRoutes();
}
protected function mapWebRoutes()
{
Route::middleware('web')
->namespace($this->namespace)
->group(base_path('routes/web.php'));
if (auth()->check() && auth()->user()->database_name) {
Route::middleware('web')
->namespace($this->namespace)
->group(base_path('routes/' . auth()->user()->database_name . '.php'));
}
}
}