Multi-tenant sistemi için,
Önce User tablosuna kullanıcı kaydı yapıyorum. Sonrasında tenant ve domain tablolarına kayıt işlemi yapmaya çalışıyorum. Tenant modeli içindeki user_id
foreign olduğu için midir nedir, oraya kullanıcının id'sini kaydetmiyor.
Controller:
if (empty($hataArray)) {
//Kullanıcı Ekleme
$kullaniciekle = new User();
$kullaniciekle->name = $request->name;
$kullaniciekle->email = $request->email;
$kullaniciekle->mintika_id = $request->mintika_id;
$kullaniciekle->bolge_id = $kullanici->bolge_id;
$kullaniciekle->password = bcrypt(rand(10000, 99999));
$kullaniciekle->tenant_id = str_replace($var_olan, $degisecek, $request->domain);
$kullaniciekle->yetki = 3;
if ($kullaniciekle->save()) {
//Tenant Ekleme
$domainKullanicisi = User::where('tenant_id', str_replace($var_olan, $degisecek, $request->domain))->first();
$tenantekle = new Tenant();
$tenantekle->id = str_replace($var_olan, $degisecek, $request->domain);
$tenantekle->user_id = $domainKullanicisi->id;
if ($tenantekle->save()) {
$var_olan2 = array(" ", "www", "ww", "ww.", "wwww", "wwww.");
$degisecek2 = array("", "", "", "", "", "");
//Donain Ekleme
$domainekle = new Domain();
$domainekle->domain = str_replace($var_olan2, $degisecek2, $request->domain);
$domainekle->tenant_id = str_replace($var_olan, $degisecek, $request->domain);
$domainekle->save();
}
User Modeli:
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->string('emailcode')->nullable();
$table->string('password');
$table->integer('yetki')->default(0)->comment('100:root 1:bolge 2:mintika 3:yurt');
$table->string('tenant_id');
$table->foreignId('mintika_id')->constrained('mintikalars')->cascadeOnDelete();
$table->foreignId('bolge_id')->constrained('bolgelers');
$table->timestamp('email_verified_at')->nullable();
$table->rememberToken();
$table->timestamps();
Tenant Modeli:
$table->string('id')->primary();
$table->foreignId('user_id')->constrained('users')->cascadeOnDelete();
$table->timestamps();
$table->json('data')->nullable();