Аренда для Laravel v3 не создает базу данныхMySql

Форум по Mysql
Ответить
Anonymous
 Аренда для Laravel v3 не создает базу данных

Сообщение Anonymous »

Мне нужны отдельные базы данных для каждого развертывания (арендаторы). < /p>

Код: Выделить всё

public function store(Request $request)
{
Log::info("Starting deployment creation for slug: " . $request->slug);

// **Validate Input**
$request->validate([
'tenant_name' => 'required|string|max:255',
'slug' => 'required|string|max:255|unique:deployments,slug',
'contact_email' => 'required|email|unique:users,email',
'contact_number' => 'required|string|max:20',
'address' => 'required|string|max:500',
'country' => 'required|string|max:100',
'language' => 'required|string|max:10',
'subscription_start_date' => 'required|date',
'subscription_end_date' => 'nullable|date|after_or_equal:subscription_start_date',
'password' => 'required|string|min:8|confirmed',
]);

DB::beginTransaction(); // **Ensure rollback in case of failure**
$tenant = null;

try {
Log::info("Creating deployment record in central database...");

// **Create Tenant Deployment Entry**
$tenant = Deployment::create([
'slug' => $request->slug,
'database_name' => 'tenant_' . $request->slug,
'tenant_name' => $request->tenant_name,
'address' => $request->address,
'contact_email' => $request->contact_email,
'contact_number' => $request->contact_number,
'country' => $request->country,
'language' => $request->language,
'subscription_start_date' => $request->subscription_start_date,
'subscription_end_date' => $request->subscription_end_date,
'status' => 'active',
]);

Log::info("Deployment created: " . json_encode($tenant->toArray()));

// **Automatically Create and Configure Database**
Log::info("Initializing tenancy for tenant: " . $tenant->id);
tenancy()->initialize($tenant);

Log::info("Current Database After Initialization: " . DB::connection()->getDatabaseName());

// **Run Migrations for New Tenant**
Log::info("Running migrations for tenant database: " . $tenant->database_name);
Artisan::call('tenants:migrate', ['--tenants' => [$tenant->id]]);
Log::info("Migrations completed for tenant: " . $tenant->database_name);

// **Create the Admin User for the New Tenant**
Log::info("Creating admin user for tenant: " . $tenant->id);
$tenant->run(function () use ($request) {
Log::info("Inside tenant database: " . DB::connection()->getDatabaseName());
User::create([
'name' => $request->tenant_name . ' Admin',
'email' => $request->contact_email,
'password' => Hash::make($request->password),
'role' => 1, // Admin role
]);
Log::info("Admin user created successfully in tenant database.");
});

// **Commit Transaction & Reset to Central DB**
Log::info("Committing transaction and switching back to central database...");
DB::commit();
tenancy()->end();
Log::info("Deployment completed successfully for: " . $tenant->id);

return redirect()->route('deployments.index')->with('success', 'Deployment created successfully.');
} catch (Exception $e) {
// **Rollback on Failure**
DB::rollBack();
Log::error("Error during deployment creation: " . $e->getMessage());

tenancy()->end();
if ($tenant != null) {
$tenant->delete(); // Remove failed deployment record
Log::info("Rolled back deployment record for: " . $tenant->id);
}

return back()->withErrors(['error' => 'Error creating deployment: ' .  $e->getMessage()]);
}
}
< /code>
Модель развертывания: < /p>


Подробнее здесь: [url]https://stackoverflow.com/questions/79448464/tenancy-for-laravel-v3-not-creating-database[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «MySql»