【问题标题】:How to create a mysql db with Laravel如何使用 Laravel 创建一个 mysql 数据库
【发布时间】:2016-12-14 09:40:54
【问题描述】:

我正在使用 Laravel 5.2。我已经设置了我的第一个迁移,我想运行它们。从video tutorial 开始,它没有解释如何创建 mysql 数据库。我知道我可以在 phpmyadmin 中手动执行此操作,但有 Laravel 方法吗?

这将安装迁移表:

php artisan migrate:install

是否有类似的命令可以创建数据库?

我认为流程应该是:

php artisan DB:install (or similar command)

安装迁移表:

php artisan migrate:install

运行迁移:

php artisan migrate

并回滚迁移:

php artisan migrate:rollback

【问题讨论】:

    标签: laravel


    【解决方案1】:

    没有提供开箱即用的功能,但您可以创建自己的命令来为您执行此操作:

    php artisan make:console CreateDatabase
    // Note, in 5.3 this is make:command
    

    然后在app/Console/Commands 中你会找到CreateDatabase.php。打开那个吸盘,让我们做一些改变:

    protected $name = "make:database";
    // in Laravel 5.3 + it's protected $signature
    

    那么在您的文件下方,我们需要一个新函数:

    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
    ];
    

    【讨论】:

    • 你通过useDB添加了什么?
    • @atomkirk 应该是门面。 Illuminate\Support\Facades\DB
    • @ArieCwHat 你是对的。虽然还是可以的。我现在正在使用移动设备,但今晚我会尝试获得更新的答案。
    • @Ohgodwhy 会很酷,但我在 Laravel 的github 中开了一个帖子,如果你在那里给出你的解决方案也会很棒:P –
    • @Ohgodwhy 那么没有办法用空的mysql服务器创建数据库吗?我正在尝试使用类似于您的答案的命令创建配置文件“database.php”(或 .env 文件)中使用的数据库。
    【解决方案2】:

    如果您也使用不同的 mysql 连接,此答案可能很有用。我在 laravel 5.5 中编写代码

    步骤:1创建命令

    php artisan make:command CreateDatabaseCommand
    

    Step:2在app/Console/Kernel.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连接不同的连接中创建数据库时才应该使用第二个参数,否则命令将自动采用默认的数据库连接

    希望这会对某人有所帮助:)

    【讨论】:

      【解决方案3】:

      如果您不打算使用 Vagrant box 或虚拟机进行本地开发,那么您将不得不安装您选择的数据库驱动程序,然后创建一个新数据库。

      要从命令行运行 MySQL 来做到这一点:

      $ mysql -uroot -p
      mysql> create database yourDatabaseName;
      

      然后cp .env.example .env 并更新您的数据库凭据。

      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` 应该可以工作。以下是一些可能对您有帮助的教程资源:

      Initial database creation and seeding with Laravel 5

      How to install MySQL on OSX

      【讨论】:

        【解决方案4】:

        Vikash 的反应奏效了。 (在 Laravel 5.8 中)

        根据 Vikash 的回应: How to create a mysql db with Laravel

        我创建了以下命令,该命令使用您分配的排序规则创建 MySQL 数据库。 我已经上传到这个GitHub repository

        希望对其他开发者有所帮助。

        【讨论】:

          【解决方案5】:

          您必须先制作模态并制作其迁移表才能制作数据库。 你应该使用: php artisan make:model -m 命令来制作模型和迁移表。之后在任何文本编辑器中打开迁移表以在数据库表中添加列,然后使用此命令进行迁移:

          php 工匠迁移

          【讨论】:

            【解决方案6】:

            您应该创建数据库,并为其设置连接参数。然后,Laravel 将访问数据库并运行迁移(创建表)和播种机。

            您可以在此处找到php artisan migrate 的参数:https://laravel.com/docs/5.2/migrations#running-migrations

            【讨论】:

              猜你喜欢
              • 2023-03-16
              • 2011-07-27
              • 2022-11-14
              • 1970-01-01
              • 2012-02-23
              • 2015-07-25
              • 1970-01-01
              • 1970-01-01
              • 2015-09-01
              相关资源
              最近更新 更多