Teach you how to use the PHP database migration tool 'Phinx'
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!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

If you are an experienced PHP developer, you might have the feeling that you’ve been there and done that already.You have developed a significant number of applications, debugged millions of lines of code, and tweaked a bunch of scripts to achieve op

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

A string is a sequence of characters, including letters, numbers, and symbols. This tutorial will learn how to calculate the number of vowels in a given string in PHP using different methods. The vowels in English are a, e, i, o, u, and they can be uppercase or lowercase. What is a vowel? Vowels are alphabetic characters that represent a specific pronunciation. There are five vowels in English, including uppercase and lowercase: a, e, i, o, u Example 1 Input: String = "Tutorialspoint" Output: 6 explain The vowels in the string "Tutorialspoint" are u, o, i, a, o, i. There are 6 yuan in total

This tutorial demonstrates how to efficiently process XML documents using PHP. XML (eXtensible Markup Language) is a versatile text-based markup language designed for both human readability and machine parsing. It's commonly used for data storage an

Static binding (static::) implements late static binding (LSB) in PHP, allowing calling classes to be referenced in static contexts rather than defining classes. 1) The parsing process is performed at runtime, 2) Look up the call class in the inheritance relationship, 3) It may bring performance overhead.

What are the magic methods of PHP? PHP's magic methods include: 1.\_\_construct, used to initialize objects; 2.\_\_destruct, used to clean up resources; 3.\_\_call, handle non-existent method calls; 4.\_\_get, implement dynamic attribute access; 5.\_\_set, implement dynamic attribute settings. These methods are automatically called in certain situations, improving code flexibility and efficiency.
