求实现思路
客户希望把现有系统改造为多租户系统,每个租户有各自的数据库和二级域名
用户登录不同域名使用对应的数据库已经解决。
现有问题是,当租户注册完成后,我创建了数据库并且,根据租户填写的信息在更新响应的表,比如用户名,密码,城市,地址等,
现在的做法是创建一个 command,然后注册成功后再调用这个命令
部分代码
$signature = 'tenant:seed {name} {password} {email} {verify_token}';
public function handle()
{
// https://stackoverflow.com/questions/21307464/can-i-import-a-mysql-dump-to-a-laravel-migration
$companyName = $this->argument('name');
$email = $this->argument('email');
$verifyToken = $this->argument('verify_token');
$dbname = config('tenant.db_prefix') . $companyName;
$cryPassword = bcrypt($this->argument('password'));
DB::unprepared("CREATE DATABASE `$dbname` DEFAULT CHARACTER SET UTF8 COLLATE UTF8_GENERAL_CI;");
DB::unprepared("USE $dbname;");
DB::unprepared(file_get_contents(storage_path('sql/tenant20200928.sql')));
DB::unprepared("update Employee set empName='$companyName', email='$email', empEmail='$email', empPassword = '$cryPassword', verify_token = '$verifyToken' where empNr = 1 limit 1");
}
目前问题是创建数据库速度有点慢,有些字段还需要更新其他表,比如地址,城市,老是往命令行传参数也是好办法,求更好思路,谢谢
推荐文章: