使用laravel动态创建数据库和表

时间:2019-04-30 07:09:56

标签: mysql database laravel

我想动态创建一个新数据库,并为每个新用户动态创建具有特权,新数据库中表的特权数据库(用户),并且仅使用代码而不使用命令提示符/控制台。是的,我对laravel几乎是陌生的,但是我对PHP有很好的了解。

我在DB::statement上进行了一些搜索以创建数据库,但并没有得到太多。我还尝试了类似artisan::call(migrate)的迁移方法,但是在此方面也没有很清楚。

我想要使用laravel代码而不是来自/来自命令提示符的命令的解决方案。

1 个答案:

答案 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();
               .
               .
               .
                });
            }