Poo*_*ian 15 database-migration multi-tenant laravel laravel-4
在我的应用程序中,每个用户都有自己的数据库,用户注册后创建.连接和数据库数据(数据库名称,用户名,密码)保存在默认数据库的表中.
try{
DB::transaction(function() {
$website = new Website();
$website->user_id = Auth::get()->id;
$website->save();
$database_name = 'website_'.$website->id;
DB::statement(DB::raw('CREATE DATABASE ' . $database_name));
$websiteDatabase = new WebsiteDatabase();
$websiteDatabase->website_id = $website->id;
$websiteDatabase->database_name = $database_name;
$websiteDatabase->save();
});
} catch(\Exception $e) {
echo $e->getMessage();
}
Run Code Online (Sandbox Code Playgroud)
现在我想在新用户的数据库创建后运行一些迁移.
可能吗?
谢谢
pie*_*ara 32
在你的app/config/database.php中你必须:
<?php
return array(
'default' => 'mysql',
'connections' => array(
# Our primary database connection
'mysql' => array(
'driver' => 'mysql',
'host' => 'host1',
'database' => 'database1',
'username' => 'user1',
'password' => 'pass1'
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
# Our secondary database connection
'mysql2' => array(
'driver' => 'mysql',
'host' => 'host2',
'database' => 'database2',
'username' => 'user2',
'password' => 'pass2'
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
),
);
Run Code Online (Sandbox Code Playgroud)
现在您已在迁移中准备了两个数据库连接,您可以:
Schema::connection('mysql2')->create('some_table', function($table)
{
$table->increments('id');
});
Run Code Online (Sandbox Code Playgroud)
这应该工作.更多信息:http://fideloper.com/laravel-multiple-database-connections
小智 26
如果您将数据库配置放在该database.php文件上,这可以帮助您:
php artisan migrate --database=**otherDatabase**
Run Code Online (Sandbox Code Playgroud)
小智 7
如果您的意思是使用不同的数据库连接,它存在于文档中:
Schema::connection('foo')->create('users', function (Blueprint $table) {
$table->bigIncrements('id');
});
Run Code Online (Sandbox Code Playgroud)
Config::set我有同样的问题,我的解决方案是先使用然后运行更改数据库Artisan::call("migrate")。所以根据你的代码:
DB::statement(DB::raw('CREATE DATABASE ' . $database_name));
Config::set('database.connections.mysql.database', $database_name);
Artisan::call("migrate --database=mysql");
Run Code Online (Sandbox Code Playgroud)
配置仅在您的会话中更改,然后稍后重置为当前设置。
| 归档时间: |
|
| 查看次数: |
20260 次 |
| 最近记录: |