Как создать MySQL db с Laravel
я использую Laravel 5.2. Я настроил свои первые миграции и хочу запустить их. От видео уроке это не объясняет, как создать БД MySQL. Я знаю,что могу сделать это вручную в phpmyadmin, но есть ли способ сделать это?
это установит таблицу миграции:
php artisan migrate:install
есть ли аналогичная команда, которая создаст БД?
Я думаю, что процесс должен быть:
php artisan DB:install (or similar command)
установить миграций таблица:
php artisan migrate:install
выполнить миграцию:
php artisan migrate
и откат миграции:
php artisan migrate:rollback
5 ответов
ничего не предусмотрено из коробки, но вы можете сделать свою собственную команду, которая может сделать это за вас:
php artisan make:console CreateDatabase
// Note, in 5.3 this is make:command
затем в app/Console/Commands
вы можете найти CreateDatabase.php
. Откройте эту присоску и давайте внесем несколько изменений:
protected $name = "make:database";
тогда внизу в вашем файле нам нужна новая функция:
protected function getArguments()
{
return [
['name', InputArgument::REQUIRED, 'The name of the database'],
];
}
тогда мы сделаем другую функцию под названием fire()
который будет вызван при вызове команды:
public function fire()
{
DB::getConnection()->statement('CREATE DATABASE :schema', ['schema' => $this->argument('name')]);
}
и теперь вы можете просто сделать это:
php artisan make:database newdb
теперь вы получите newdb
база данных, созданная для вас на основе конфигурации подключения.
редактировать забыл самую важную часть-вам нужно сказать app\Console\Commands\Kernel.php
о Вашем новом коменданте, не забудьте добавить его в protected $commands[]
массив.
protected $commands = [
///...,
App\Console\Commands\CreateDatabase::class
];
этот ответ может быть полезен, если вы также используете другое соединение mysql. Я пишу код в laravel 5.5
Шаг 1 создать команду
php artisan make:command CreateDatabaseCommand
Шаг 2 в приложении / консоли / ядре.php регистрирует команду
protected $commands = [
CreateDatabaseCommand::class
];
Шаг 3 напишите логику в CreateDatabaseCommand.файл php
protected $signature = 'make:database {dbname} {connection?}';
public function handle()
{
try{
$dbname = $this->argument('dbname');
$connection = $this->hasArgument('connection') && $this->argument('connection') ? $this->argument('connection'): DB::connection()->getPDO()->getAttribute(PDO::ATTR_DRIVER_NAME);
$hasDb = DB::connection($connection)->select("SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = "."'".$dbname."'");
if(empty($hasDb)) {
DB::connection($connection)->select('CREATE DATABASE '. $dbname);
$this->info("Database '$dbname' created for '$connection' connection");
}
else {
$this->info("Database $dbname already exists for $connection connection");
}
}
catch (\Exception $e){
$this->error($e->getMessage());
}
}
вот и все. А теперь беги! команда
php artisan make:database {your-database-name} {your-connection-name}:
Примечание: вы должны использовать второй аргумент, только если вы хотите создать базу данных в любом другом соединении от соединения mysql по умолчанию, иначе команда автоматически примет соединение db по умолчанию
надеюсь, что это поможет кому-то :)
вы должны сначала сделать свой модальный и сделать его таблицу миграции также для того, чтобы сделать базу данных. вы должны использовать: php artisan make:model-M для создания модели и таблицы миграции. после этого откройте таблицу миграции в любом texteditor, чтобы добавить столбцы в таблицу базы данных, а затем используйте эту команду для миграции:
в PHP ремесленника мигрировать
вы должны создать БД и установить для нее параметры подключения. Затем Laravel получит доступ к БД и запустит миграции (сделает таблицы) и сеялки.
вы можете найти параметры php artisan migrate
здесь:https://laravel.com/docs/5.2/migrations#running-migrations
если вы не собираетесь использовать Vagrant box или виртуальную машину для локальной разработки, вам придется установить выбранный драйвер базы данных, а затем создать новую базу данных.
для этого с MySQL из командной строки запустите:
$ mysql -uroot -p
mysql> create database yourDatabaseName;
затем cp .env.example .env
и обновите свои creds базы данных.
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=yourDatabaseName
DB_USERNAME=root
DB_PASSWORD=root
вы будете иметь настроить имя пользователя и пароль к базе данных, когда вы впервые установили драйвер. После этого вам, возможно, придется php artisan key:generate
и / или ' php artisan config:clearbut
php artisan migrate ' должен работать. Ниже приведены некоторые учебные ресурсы, которые могут оказаться полезными: