在webman中使用phinx管理数据库

376 阅读1分钟

安装

composer require robmorgan/phinx

初始化

vendor/bin/phinx init

执行该命令后会在项目根目录下生成phinx.php 配置文件,根据自身情况修改配置信息

如果想要在phinx.php文件中读取.env中的配置,需要安装vlucas/phpdotenv

composer require vlucas/phpdotenv
​
<?php
require __DIR__.'/vendor/autoload.php';
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->load();
​
return
[
    'paths' => [
        'migrations' => 'database/migrations',
        'seeds' => 'database/seeds',
    ],
    'environments' => [
        'default_migration_table' => 'phinxlog',
        'default_environment' => 'development',
        'production' => [
            'adapter' => 'mysql',
            'host' => 'localhost',
            'name' => 'production_db',
            'user' => 'root',
            'pass' => '',
            'port' => '3306',
            'charset' => 'utf8',
        ],
        'development' => [
            'adapter' => 'mysql',
            'host' => env('DB_HOST', 'localhost'),
            'name' => env('DB_DATABASE', ''),
            'user' => env('DB_USERNAME', ''),
            'pass' => env('DB_PASSWORD', ''),
            'port' => env('DB_PORT', '3306'),
            'charset' => env('DB_CHARSET', 'utf8'),
        ],
    ],
    'version_order' => 'creation',
];

使用命令,创建表,需要创建两个文件夹database/migrations,database/seeds

vendor/bin/phinx create CreateUserTables

执行完命令后会生成 YYYYMMDDHHMMSS_create_user_tables的一个文件

在方法change中填写
public function change(): void
{
    $table = $this->table('users');
    $table->addColumn('user_id', 'integer')
        ->addColumn('name', 'string', ['limit' => '125', 'default' => ''])
        ->addColumn('created_at', 'datetime', ['default' => 'CURRENT_TIMESTAMP', 'comment' => '创建时间'])
        ->create();
}

执行生成表

vendor/bin/phinx migrate -e development

在数据库中会生成phinxlogusers表,其中phinxlog用来记录生成表的记录

详细需求查看官方文档