我试图为laravel 9中的每个餐厅创建一个数据库。基本上当管理员添加一个新的客户端时。代码会自动为该客户端创建一个新的数据库,然后为新的数据库运行迁移,创建用户.当用户登录时,我们检查它属于哪个客户端,然后登录到相关的数据库.基本上一个代码无限的数据库.我写的代码动态连接到多个数据库中php,但从来没有在laravel。
误差
尝试创建新数据库时调用未定义的方法Illuminate\Database\PostgresConnection::getConnection()。
private function createDB($dbName)
{
try {
$outputLog = '';
DB::getConnection()->statement("CREATE DATABASE :$dbName", array('schema' => "schema"));
$this->migrate($outputLog);
} catch(Exception $e) {
return $this->response($e->getMessage(), 'error', $outputLog);
}
return $this->response('Installation finished', 'success',$outputLog);
}
/// migrate database for new system
private function migrate($outputLog)
{
try {
Artisan::call('migrate', ["--force"=> true], $outputLog);
} catch(Exception $e){
return $this->response($e->getMessage(), 'error', $outputLog);
}
return $this->seed($outputLog);
}
// run seed folder after migration
private function seed($outputLog)
{
try {
// Artisan::call('db:seed', ['--force' => true], $outputLog);
Artisan::call('db:seed', array_filter([
'--class' => 'Database\\Seeders\\DatabaseSeeder',
'--force' => true,
]));
} catch(Exception $e) {
return $this->response($e->getMessage(), 'error', $outputLog);
}
return $this->response('Installation finished', 'success', $outputLog);
}
字符串
1条答案
按热度按时间hgc7kmma1#
首先,为每个客户端创建新的数据库并不是一个好方法。将来维护这些数据库将非常复杂。当涉及到你的问题时,你可以尝试这样做:
字符串
注意:我假设你使用的是'pgsql'连接名,但如果你使用的是不同的名称,你应该调整它。