динамически создавать базу данных и таблицу в ней с помощью laravel - PullRequest
0 голосов
/ 30 апреля 2019

Я хочу создать новую базу данных динамически и базу данных (пользователя) с привилегиями, таблицами в новой базе данных для каждого нового пользователя на лету и только с кодом без использования командной строки / консоли. и да, я почти новичок в laravel, но у меня хорошее знание PHP.

Я провел поиск по DB::statement для создания базы данных, но не получил много. Я также попробовал что-то вроде artisan::call(migrate) для миграции, но в этом тоже ничего не получилось очень ясно.

Я хотел бы получить решения с кодом laravel, а не команды из / для командной строки.

1 Ответ

1 голос
/ 30 апреля 2019

Для создания таблицы в коде необходимо использовать менеджер капсул 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();
               .
               .
               .
                });
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...