我想动态创建一个新数据库,并为每个新用户动态创建具有特权,新数据库中表的特权数据库(用户),并且仅使用代码而不使用命令提示符/控制台。是的,我对laravel几乎是陌生的,但是我对PHP有很好的了解。
我在DB::statement
上进行了一些搜索以创建数据库,但并没有得到太多。我还尝试了类似artisan::call(migrate)
的迁移方法,但是在此方面也没有很清楚。
我想要使用laravel代码而不是来自/来自命令提示符的命令的解决方案。
答案 0 :(得分:1)
您必须使用Eloquent胶囊管理器在代码中创建表格。
use Illuminate\Database\Capsule\Manager as Capsule;
$capsule = new Capsule();
$capsule->addConnection([
'driver' => config('database.connections.mysql.driver),
'host' => config('database.connections.mysql.host),
'database' => config('database.connections.mysql.database),
'username' => config('database.connections.mysql.username),
'password' => config('database.connections.mysql.password),
'charset' => config('database.connections.mysql.charset),
'collation' => config('database.connections.mysql.collation),
'prefix' => config('database.connections.mysql.prefix),
]);
然后您可以像这样创建表。请确保检查表是否存在:
if(!Capsule::schema()->hasTable($this->table)){
Capsule::schema()->create($this->table, function (Blueprint $table) {
$table->engine = 'InnoDB';
$table->charset = 'utf8';
$table->increments('id');
$table->string('email')->unique();
.
.
.
});
}