Teach you how to use the PHP database migration tool 'Phinx'

Release: 2023-04-10 22:00:01
forward
5874 people have browsed it

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.

Teach you how to use the PHP database migration tool 'Phinx'

Document address: https://tsy12321.gitbooks.io/phinx-doc/content

1. Installation

composer require nhzex/think-phinx
Copy after login

2. Execute

php vendor/bin/phinx
Copy after login

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(
    &#39;DB_HOST&#39; => &#39;localhost&#39;,
    &#39;DB_NAME&#39; => &#39;root&#39;,
    &#39;DB_USER&#39; => &#39;root&#39;,
    &#39;DB_PWD&#39; => &#39;&#39;,
);
$settings = $config;
#phinx.php
<?php
require &#39;db_config.php&#39;;
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"
        )
    )
);
Copy after login

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(&#39;user&#39;);
        $user->addColumn(&#39;open_id&#39;, &#39;string&#39;, [&#39;limit&#39;=>64]);
        $user->addColumn(&#39;register_time&#39;, &#39;timestamp&#39;, [&#39;default&#39; => &#39;CURRENT_TIMESTAMP&#39;]);
        $user->addColumn(&#39;favorite_music&#39;, &#39;integer&#39;, [&#39;default&#39;=> 0, &#39;comment&#39;=>&#39;喜欢的音乐&#39;]);
        $user->addColumn(&#39;favorite_vedio&#39;, &#39;integer&#39;, [&#39;default&#39;=> 0, &#39;comment&#39;=>&#39;喜欢的视频数&#39;]);
        $user->addColumn(&#39;favorite_article&#39;, &#39;integer&#39;, [&#39;default&#39;=> 0, &#39;comment&#39;=>&#39;喜欢的文章数&#39;]);
        $user->addColumn(&#39;baby_birthday&#39;, &#39;date&#39;, [&#39;null&#39;=>true, &#39;comment&#39;=>&#39;宝宝生日&#39;]);
        $user->addColumn(&#39;baby_sex&#39;, &#39;boolean&#39;, [&#39;null&#39;=>true, &#39;comment&#39;=>&#39;宝宝性别&#39;]);
        $user->addColumn(&#39;last_login&#39;, &#39;datetime&#39;, [&#39;null&#39;=>true, &#39;comment&#39;=>&#39;最后登陆日期&#39;]);
        $user->save();
    }
Copy after login

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(&#39;alter table resource drop column artist ;&#39;);
        $resource = $this->table(&#39;resource&#39;);
        $resource->addColumn(&#39;artist&#39;, &#39;string&#39;, [&#39;limit&#39;=>128, &#39;default&#39;=>&#39;&#39;]);
        $resource->update();
    }
Copy after login

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
Copy after login

13. Data filling

php vendor/bin/phinx seed:create UserSeeder
php vendor/bin/phinx seed:run -e product
Copy after login

Generate file

<?php
use Phinx\Seed\AbstractSeed;
class UserSeeder extends AbstractSeed {
    /**
     * 插入数据
     */
    public function run() {
        $data = array(
          array(
              &#39;id&#39;    => 1,
          ),
          array(
              &#39;id&#39;    => 2,
          )
        );
        $posts = $this->table(&#39;users&#39;);
        $posts->insert($data)->save();
    }
}
Copy after login

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!

Related labels:
php
source:Laravel技术社区公众号
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template