Heim  >  Artikel  >  Backend-Entwicklung  >  Wie verwende ich Phinx mit CakePHP?

Wie verwende ich Phinx mit CakePHP?

PHPz
PHPzOriginal
2023-06-04 08:02:51666Durchsuche

CakePHP ist ein beliebtes PHP-MVC-Framework, das verschiedene Tools und Funktionen bereitstellt, um Entwicklern bei der Erstellung effizienter Webanwendungen zu helfen. Phinx ist eine flexible Datenbankmigrationsbibliothek, die Entwicklern hilft, Datenbankänderungen einfach zu verwalten. In diesem Artikel wird die Verwendung von Phinx mit CakePHP vorgestellt.

  1. Phinx installieren

Phinx mit Composer installieren:

composer require robmorgan/phinx

Nach Abschluss der Installation befindet sich die ausführbare Phinx-Datei im Verzeichnis vendor/bin Ihrer Anwendung. 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 konfigurieren

    🎜Erstellen Sie eine neue Datei phinx.php im Verzeichnis app/config und fügen Sie den folgenden Inhalt hinzu. 🎜rrreee🎜Diese Konfigurationsdatei weist Phinx an, in den Verzeichnissen config/Migrations und config/Seeds der Anwendung nach Migrations- und Seed-Dateien zu suchen und MySQL zu verwenden, um eine Verbindung zu einem Server namens mydatabases Datenbank. 🎜
      🎜Migrationen erstellen🎜🎜🎜Erstellen Sie eine neue Migrationsdatei im Verzeichnis config/Migrations, zum Beispiel CreateUsersTable.php. Die Migrationsdatei sollte eine up- und eine down-Methode zum Durchführen oder Rückgängigmachen der Migration in der Datenbank definieren. 🎜🎜Beispiel: 🎜rrreee🎜Diese Migrationsdatei erstellt eine neue users-Tabelle in der Datenbank und fügt username, password, email hinzu , created und updated Spalten. 🎜
        🎜Migrationen ausführen🎜🎜🎜Verwenden Sie den folgenden Befehl, um Migrationen auszuführen: 🎜rrreee🎜Dieser Befehl führt alle Migrationsdateien aus, die sich im Status „Ausstehend“ befinden (nicht angewendet). 🎜🎜Sie können eine Migration mit dem folgenden Befehl auf den vorherigen Status zurücksetzen: 🎜rrreee🎜 Wenn Sie auf den Status vor einer bestimmten Migration zurücksetzen möchten, verwenden Sie den folgenden Befehl: 🎜rrreee🎜where {timestamp} ist der Zeitstempel der Migration, auf die zurückgesetzt werden soll. 🎜<ol start="5">🎜Erstellen Sie einen Seed🎜🎜🎜Erstellen Sie eine neue Seed-Datei im Verzeichnis <code>config/Seeds, z. B. UsersSeeders.php. Die Seed-Datei sollte eine run-Methode definieren, die die Tabelle entsprechend bestimmten Kriterien füllt. 🎜🎜Beispiel: 🎜rrreee🎜Dieser Torrent fügt zwei Erstbenutzer in die Tabelle users ein. 🎜
          🎜Torrent ausführen🎜🎜🎜Führen Sie alle Torrent-Dateien mit dem folgenden Befehl aus: 🎜rrreee🎜Dieser Befehl führt alle Torrent-Dateien aus, die sich im Status „Ausstehend“ befinden (nicht angewendet). 🎜🎜Sie können eine bestimmte Seed-Datei mit dem folgenden Befehl ausführen: 🎜rrreee🎜wobei {seederName} der Name der Seed-Datei ist, die Sie ausführen möchten. 🎜🎜Da Sie nun wissen, wie Sie Phinx mit CakePHP verwenden, können Sie damit beginnen, Ihre Datenbankänderungen damit zu verwalten! 🎜

Das obige ist der detaillierte Inhalt vonWie verwende ich Phinx mit CakePHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn