CakePHP is a popular PHP MVC framework that provides various tools and features to help developers create efficient web applications. Phinx is a flexible database migration library that helps developers manage database changes easily. This article will introduce how to use Phinx with CakePHP.
Install Phinx using Composer:
composer require robmorgan/phinx
After the installation is complete, it will be in your application’s vendor/bin
Get the Phinx executable file in the directory.
Create a new file phinx.php in the app/config directory and add the following content.
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' ], ] ];
This configuration file instructs Phinx to look for migration and seed files in the application's config/Migrations
and config/Seeds
directories and use MySQL to connect to a server named The database of mydatabase
.
Create a new migration file in the config/Migrations
directory, for example CreateUsersTable.php
. The migration file should define an up
and a down
method for performing or undoing the migration on the database.
Example:
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(); } }
This migration file will create a new users
table in the database and add username
, password
, email
, created
, and updated
columns.
Use the following command to run migrations:
vendor/bin/phinx migrate
This command will run all migration files that are in pending status (not applied).
You can roll back a migration to its previous state using the following command:
vendor/bin/phinx rollback
If you want to roll back to the state before a specific migration, use the following command:
vendor/bin/phinx rollback -t {timestamp}
Where {timestamp}
is the timestamp of the migration to be rolled back to.
Create a new seed file in the config/Seeds
directory, for example UsersSeeders.php
. The seed file should define a run
method that will populate the table matching specific criteria.
Example:
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(); } }
This torrent will insert two initial users into the users
table.
Run all torrent files using the following command:
vendor/bin/phinx seed:run
This command will run all torrents that are in pending status (not applied) document.
You can run a specific seed file using the following command:
vendor/bin/phinx seed:run -s {seederName}
where {seederName}
is the name of the seed file you want to run.
Now that you know how to use Phinx in CakePHP, start trying to use it to manage your database changes!
The above is the detailed content of How to use Phinx with CakePHP?. For more information, please follow other related articles on the PHP Chinese website!