Как создать 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:clearbutphp artisan migrate ' должен работать. Ниже приведены некоторые учебные ресурсы, которые могут оказаться полезными:

начальное создание базы данных и посев с Laravel 5

Как установить MySQL на OSX