This article will share with you the relevant knowledge about Phinx, the database migration tool in PHP. Phinx is particularly suitable for development, testing, online database synchronization field information, data information, generation and synchronization of test data. Wait, I hope it helps everyone.
Document address: https://tsy12321.gitbooks.io/phinx-doc/content
1. Installation
composer require nhzex/think-phinx
2. Execute
php vendor/bin/phinx
Directly run php vendor/bin/phinx init to generate the configuration file
Another method is to directly use the php file to make the configuration file
Directly run php vendor/bin/phinx init to generate the configuration file
Another method is to directly use the php file to make the configuration file File
3. Use phinx.php to configure
<?php $config = array( 'DB_HOST' => 'localhost', 'DB_NAME' => 'root', 'DB_USER' => 'root', 'DB_PWD' => '', ); $settings = $config; #phinx.php <?php require 'db_config.php'; return array( "paths" => array( "migrations" => "db/migrations", "seeds" => "db/seeds" ), "environments" => array( "defaut_migration_table" => "phinxlog", "default_database" => "lleg", "default_environment" => "development" "production" => array( "adapter" => "mysql", "host" => $settings["DB_HOST"], "name" => $settings["DB_NAME"], "user" => $settings["DB_USER"], "pass" => $settings["DB_PWD"], "port" => 3306, "charset" => "utf8" ), "development" => array( "adapter" => "mysql", "host" => $settings["DB_HOST"], "name" => $settings["DB_NAME"], "user" => $settings["DB_USER"], "pass" => $settings["DB_PWD"], "port" => 3306, "charset" => "utf8" ) ) );
4.Execute php vendor/bin/phinx status Check the connection status
5. Execute php vendor/bin/phinx create migration
6. Now created /db/migrations/20180310020523_migration.php
Edit this file and add the database creation content.
public function change() { $user = $this->table('user'); $user->addColumn('open_id', 'string', ['limit'=>64]); $user->addColumn('register_time', 'timestamp', ['default' => 'CURRENT_TIMESTAMP']); $user->addColumn('favorite_music', 'integer', ['default'=> 0, 'comment'=>'喜欢的音乐']); $user->addColumn('favorite_vedio', 'integer', ['default'=> 0, 'comment'=>'喜欢的视频数']); $user->addColumn('favorite_article', 'integer', ['default'=> 0, 'comment'=>'喜欢的文章数']); $user->addColumn('baby_birthday', 'date', ['null'=>true, 'comment'=>'宝宝生日']); $user->addColumn('baby_sex', 'boolean', ['null'=>true, 'comment'=>'宝宝性别']); $user->addColumn('last_login', 'datetime', ['null'=>true, 'comment'=>'最后登陆日期']); $user->save(); }
7. By default, an auto-incrementing id will be added as the primary key
Execute php vendor/bin/phinx migrate
8. Initialize data
Execute php vendor/bin/phinx seed:create CategorySeeder
The system automatically creates created ./db/seeds/CategorySeeder.php
9. Modify CategorySeeder.php
Execute php vendor/bin/phinx seed:run and all Seed
10. If you want to run The specified Seed needs to be specified with the -s parameter
php vendor/bin/phinx seed:run -s CategorySeeder
11. Update the table structure
When you need to update the table structure, you need to create a migrate
Execute php vendor/bin/phinx create ChangeArtist
Then you need to update The content is written to the change function
public function change() { $this->execute('alter table resource drop column artist ;'); $resource = $this->table('resource'); $resource->addColumn('artist', 'string', ['limit'=>128, 'default'=>'']); $resource->update(); }
Finally execute php vendor/bin/phinx migrate
The migrate that has been executed before will not be executed, only the updated part will be executed.
12. Rollback
php vendor/bin/phinx rollback
13. Data filling
php vendor/bin/phinx seed:create UserSeeder php vendor/bin/phinx seed:run -e product
Generate file
<?php use Phinx\Seed\AbstractSeed; class UserSeeder extends AbstractSeed { /** * 插入数据 */ public function run() { $data = array( array( 'id' => 1, ), array( 'id' => 2, ) ); $posts = $this->table('users'); $posts->insert($data)->save(); } }
phinx is particularly suitable for development, testing, online database synchronization field information, data information, generation and synchronization of test data, etc., so it is particularly suitable for use in the team development process, especially for a For new projects, as long as you insist on using phinx for independent deployment at the beginning of the project, every time the database table information is changed, team members can synchronize the code through git or svn and then execute the execution command mentioned above to synchronize the database table information. This avoids the cumbersomeness and errors of synchronizing library table information between different development environments during traditional development.
There is a configuration item "default_migration_table" in phinx.php => "phinxlog". Changes are recorded here. This is also a measure to ensure that they are not executed repeatedly, so there is no need to worry about losing or repeating the execution of the command. .
Recommended learning: "PHP Video Tutorial"
The above is the detailed content of Teach you how to use the PHP database migration tool 'Phinx'. For more information, please follow other related articles on the PHP Chinese website!