如何使用Laravel创建MySQL数据库

pdkcd3nj  于 2023-11-20  发布在  Mysql
关注(0)|答案(7)|浏览(129)

我正在使用Laravel 5.2。我已经设置了我的第一次迁移,我想运行它们。从video tutorial它没有解释如何创建一个mysql数据库。我知道我可以在phpmyadmin中手动完成这一点,但有Laravel的方法来做吗?
这将安装迁移表:

php artisan migrate:install

字符串
是否有类似的命令可以创建DB?
我觉得这个过程应该是:

php artisan DB:install (or similar command)


安装迁移表:

php artisan migrate:install


运行迁移:

php artisan migrate


并回滚迁移:

php artisan migrate:rollback

ef1yzkbh

ef1yzkbh1#

没有提供开箱即用的东西,但你可以自己编写命令来为你做到这一点:

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

mepcadol

mepcadol2#

如果你使用不同的mysql连接,这个答案可能会很有用。我正在用laravel 5.5写代码

步骤:1创建命令

php artisan make:command CreateDatabaseCommand

字符串

步骤:2在app/Console/Kernel.php中注册命令

protected $commands = [
    CreateDatabaseCommand::class
];

步骤:3在您的MySQL DatabaseCommand.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连接

希望能对大家有所帮助:)

siv3szwd

siv3szwd3#

如果你不打算使用Vagrant盒子或虚拟机进行本地开发,那么你必须安装你选择的数据库驱动程序,然后创建一个新的数据库。
要使用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:clear but php artisan migrate`应该可以工作。下面是一些教程资源,你可能会发现很有帮助:
Initial database creation and seeding with Laravel 5
How to install MySQL on OSX

jecbmhm3

jecbmhm34#

Vikash的回应奏效了。(在Laravel 5.8中)
基于Vikash的响应:如何使用Laravel创建mysql db
我已经创建了以下命令,它使用您分配的排序规则创建了一个MySQL数据库。我已经将其上传到此GitHub repository
希望对其他开发者有所帮助。

qrjkbowd

qrjkbowd5#

您可以使用Laravel Tinker创建数据库。首先在.env文件中配置正确的DB_设置。
然后运行以下命令:

php artisan tinker

    $pdo = new PDO('mysql:host=' . env('DB_HOST'), env('DB_USERNAME'), env('DB_PASSWORD'));
    $pdo->exec('CREATE DATABASE ' . env('DB_DATABASE'));

exit

字符串
作为一个班轮,它看起来像这样:

php artisan tinker --execute="(new PDO('mysql:host=' . env('DB_HOST'), env('DB_USERNAME'), env('DB_PASSWORD')))->exec('CREATE DATABASE ' . env('DB_DATABASE'))"

t3psigkw

t3psigkw6#

你应该创建数据库,并设置连接参数。然后,Laravel将访问数据库,并运行迁移(创建表)和种子。
您可以在这里找到php artisan migrate的参数:https://laravel.com/docs/5.2/migrations#running-migrations

wwtsj6pe

wwtsj6pe7#

你必须使你的模态第一,使其迁移表也为了使一个数据库.你应该用途:php工匠使:模型-m命令,使模型和迁移表.之后,打开你的迁移表在任何文本编辑器添加列在你的数据库表,然后,使用此命令迁移:
php artisan migrate

相关问题