首頁 >後端開發 >php教程 >如何在CakePHP中使用Phinx?

如何在CakePHP中使用Phinx?

PHPz
PHPz原創
2023-06-04 08:02:51754瀏覽

CakePHP是一個流行的PHP MVC框架,提供了各種工具和功能來幫助開發人員創建高效的Web應用程式。 Phinx是一個靈活的資料庫遷移庫,可以幫助開發人員輕鬆管理資料庫變更。本文將介紹如何在CakePHP中使用Phinx。

  1. 安裝Phinx

使用Composer安裝Phinx:

composer require robmorgan/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}是要執行的種子檔案的名稱。

現在您已經了解如何在CakePHP中使用Phinx了,開始嘗試使用它來管理您的資料庫變更吧!

以上是如何在CakePHP中使用Phinx?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn