Heim >Backend-Entwicklung >PHP-Tutorial >Wie verwende ich Phinx mit CakePHP?
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.
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可执行文件。
在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/Migrations
和config/Seeds
目录中查找迁移和种子文件,并使用MySQL连接到名为 mydatabase
的数据库。
在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
表,并添加username
、password
、email
、created
和updated
列。
使用以下命令运行迁移:
vendor/bin/phinx migrate
此命令将运行所有处于待处理状态(未应用)的迁移文件。
您可以使用以下命令将迁移回退到其以前的状态:
vendor/bin/phinx rollback
如果要回退到特定迁移之前的状态,请使用以下命令:
vendor/bin/phinx rollback -t {timestamp}
其中{timestamp}
是要回退到的迁移的时间戳。
在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
表中插入两个初始用户。
使用以下命令运行所有种子文件:
vendor/bin/phinx seed:run
此命令将运行所有处于待处理状态(未应用)的种子文件。
您可以使用以下命令运行特定种子文件:
vendor/bin/phinx seed:run -s {seederName}
其中{seederName}
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. 🎜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. 🎜{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. 🎜{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!