Search code examples
laravellaravel-4symfony-console

Symfony2 like database creation command in laravel console?


I have used symfony2 console to create database. If I want to create a database named "symfony" I usually mentioned that name in parameters.yml file and run the below command in console

php app/console  doctrine:database:create

But when came to laravel, I don't find similar command to create database in laravel. Can anyone help me to find out those command to create database directly from Laravel Console.


Solution

  • You can do that but you will have to create your own command.

    First, run php artisan command:make CreateDatabase --command=database:create to generate app/commands/CreateDatabase.php

    Then open that file and change it to this: (I left out all comments, but you can obviously keep them in there)

    class CreateDatabase extends Command {
        protected $name = 'database:create';
        protected $description = 'Command description.';
    
        public function fire()
        {
            DB::statement('CREATE DATABASE '.$this->argument('name'));
        }
    
        protected function getArguments()
        {
            return array(
                array('name', InputArgument::REQUIRED, 'Database name'),
            );
        }
    }
    

    Now you only have to register the command in app/start/artisan.php:

    Artisan::add(new CreateDatabase);
    

    and you're good to go.

    That's how you call it:

    php artisan database:create your-desired-database-name
    

    Alternative: artisan tinker

    You can always use php artisan tinker to run PHP code (with Laravel bootstrapped):

    php artisan tinker
    > DB::statement('CREATE DATABASE your-desired-database-name');