>  기사  >  백엔드 개발  >  CakePHP와 함께 Phinx를 사용하는 방법은 무엇입니까?

CakePHP와 함께 Phinx를 사용하는 방법은 무엇입니까?

PHPz
PHPz원래의
2023-06-04 08:02:51666검색

CakePHP는 개발자가 효율적인 웹 애플리케이션을 만드는 데 도움이 되는 다양한 도구와 기능을 제공하는 인기 있는 PHP MVC 프레임워크입니다. Phinx는 개발자가 데이터베이스 변경 사항을 쉽게 관리하는 데 도움이 되는 유연한 데이터베이스 마이그레이션 라이브러리입니다. 이번 글에서는 CakePHP에서 Phinx를 사용하는 방법을 소개합니다.

  1. Phinx 설치

Composer를 사용하여 Phinx 설치:

composer require robmorgan/phinx

설치가 완료되면 애플리케이션의 vendor/bin 디렉터리에 Phinx 실행 파일이 생성됩니다. vendor/bin目录中获得Phinx可执行文件。

  1. 配置Phinx

在app/config目录中创建一个新文件phinx.php,并添加以下内容。

use CakeCoreConfigure;

return [
   'paths' => [
       'migrations' => [
           __DIR__ . '/../config/Migrations',
       ],
       'seeds' => [
           __DIR__ . '/../config/Seeds',
       ],
   ],
   'environments' => [
       'default_migration_table' => 'phinxlog',
       'default_database' => 'default',
       'default' => [
           'adapter' => 'mysql',
           'host' => '127.0.0.1',
           'name' => 'mydatabase',
           'user' => 'myuser',
           'pass' => 'mypassword',
           'port' => '3306',
           'charset' => 'utf8'
       ],
   ]
];

此配置文件指示Phinx在应用程序的config/Migrationsconfig/Seeds目录中查找迁移和种子文件,并使用MySQL连接到名为 mydatabase的数据库。

  1. 创建迁移

config/Migrations目录中创建一个新的迁移文件,例如CreateUsersTable.php。迁移文件应定义一个up和一个down方法,用于在数据库上执行或撤销迁移。

示例:

use PhinxMigrationAbstractMigration;

class CreateUsersTable extends AbstractMigration
{
   public function change()
   {
       $table = $this->table('users');
       $table->addColumn('username', 'string', ['limit' => 20])
             ->addColumn('password', 'string', ['limit' => 100])
             ->addColumn('email', 'string', ['limit' => 50])
             ->addColumn('created', 'datetime')
             ->addColumn('updated', 'datetime')
             ->create();
   }
}

该迁移文件将在数据库中创建一个新的users表,并添加usernamepasswordemailcreatedupdated列。

  1. 运行迁移

使用以下命令运行迁移:

vendor/bin/phinx migrate

此命令将运行所有处于待处理状态(未应用)的迁移文件。

您可以使用以下命令将迁移回退到其以前的状态:

vendor/bin/phinx rollback

如果要回退到特定迁移之前的状态,请使用以下命令:

vendor/bin/phinx rollback -t {timestamp}

其中{timestamp}是要回退到的迁移的时间戳。

  1. 创建种子

config/Seeds目录中创建一个新的种子文件,例如UsersSeeders.php。种子文件应定义一个run方法,该方法将填充符合特定条件的表。

示例:

use PhinxSeedAbstractSeed;

class UsersSeeder extends AbstractSeed
{
   public function run()
   {
       $data = [
           [
               'username' => 'admin',
               'password' => password_hash('123456', PASSWORD_DEFAULT),
               'email' => 'admin@example.com',
               'created' => date('Y-m-d H:i:s'),
               'updated' => date('Y-m-d H:i:s')
           ],
           [
               'username' => 'user1',
               'password' => password_hash('password', PASSWORD_DEFAULT),
               'email' => 'user1@example.com',
               'created' => date('Y-m-d H:i:s'),
               'updated' => date('Y-m-d H:i:s')
           ]
       ];

       $table = $this->table('users');
       $table->insert($data)->save();
   }
}

此种子文件将在users表中插入两个初始用户。

  1. 运行种子

使用以下命令运行所有种子文件:

vendor/bin/phinx seed:run

此命令将运行所有处于待处理状态(未应用)的种子文件。

您可以使用以下命令运行特定种子文件:

vendor/bin/phinx seed:run -s {seederName}

其中{seederName}

    Phinx 구성

    🎜app/config 디렉터리에 phinx.php 파일을 새로 만들고 다음 내용을 추가하세요. 🎜rrreee🎜이 구성 파일은 Phinx가 애플리케이션의 config/Migrationsconfig/Seeds 디렉터리에서 마이그레이션 및 시드 파일을 찾고 MySQL을 사용하여 mydatabase의 데이터베이스. 🎜
      🎜마이그레이션 생성🎜🎜🎜config/Migrations 디렉터리에 새 마이그레이션 파일을 생성합니다(예: CreateUsersTable.php). 마이그레이션 파일은 데이터베이스에서 마이그레이션을 수행하거나 실행 취소하기 위한 updown 메서드를 정의해야 합니다. 🎜🎜예: 🎜rrreee🎜이 마이그레이션 파일은 데이터베이스에 새 users 테이블을 생성하고 username, password, email을 추가합니다. , 생성업데이트 열입니다. 🎜
        🎜Run migrations🎜🎜🎜다음 명령을 사용하여 마이그레이션을 실행하세요. 🎜rrreee🎜 이 명령은 보류 상태(적용되지 않음)에 있는 모든 마이그레이션 파일을 실행합니다. 🎜🎜다음 명령을 사용하여 마이그레이션을 이전 상태로 롤백할 수 있습니다. 🎜rrreee🎜 특정 마이그레이션 이전 상태로 롤백하려면 다음 명령을 사용하세요. 🎜rrreee🎜where {timestamp} 롤백할 마이그레이션의 타임스탬프입니다. 🎜<ol start="5">🎜시드 만들기🎜🎜🎜<code>UsersSeeders.php와 같은 config/Seeds 디렉터리에 새 시드 파일을 만듭니다. 시드 파일은 특정 기준과 일치하는 테이블을 채우는 run 메소드를 정의해야 합니다. 🎜🎜예: 🎜rrreee🎜이 토렌트는 두 명의 초기 사용자를 users 테이블에 삽입합니다. 🎜
          🎜Run torrent🎜🎜🎜다음 명령을 사용하여 모든 Torrent 파일을 실행하세요. 🎜rrreee🎜 이 명령은 보류 상태(적용되지 않음)에 있는 모든 Torrent 파일을 실행합니다. 🎜🎜다음 명령을 사용하여 특정 시드 파일을 실행할 수 있습니다: 🎜rrreee🎜여기서 {seederName}은 실행하려는 시드 파일의 이름입니다. 🎜🎜이제 CakePHP와 함께 Phinx를 사용하는 방법을 알았으니 이를 사용하여 데이터베이스 변경 사항을 관리해 보세요! 🎜

위 내용은 CakePHP와 함께 Phinx를 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.