Migration数据库迁移工具 Phinx

说明

Phinx สามารถให้การพัฒนาเข้าถึงการแก้ไขและบำรุงรักษาฐานข้อมูลได้อย่างง่ายดาย มันหลีกเลี่ยงการเขียน SQL ที่ต้องทำด้วยมือ โดยใช้ PHP API ที่ทรงพลังในการจัดการการโยกย้ายฐานข้อมูล นักพัฒนาสามารถใช้การจัดการเวอร์ชันในการจัดการการโยกย้ายฐานข้อมูลของตนได้อย่างมีประสิทธิภาพ Phinx ยังสามารถทำการโยกย้ายข้อมูลระหว่างฐานข้อมูลที่แตกต่างกันได้อย่างสะดวกสบาย นอกจากนี้ยังสามารถติดตามว่ามีสคริปต์การโยกย้ายใดบ้างที่ถูกดำเนินการ นักพัฒนาจะไม่ต้องกังวลเกี่ยวกับสถานะฐานข้อมูลอีกต่อไป ทำให้พวกเขาโฟกัสไปที่การเขียนระบบที่ดีกว่าได้มากขึ้น

项目地址

https://github.com/cakephp/phinx

安装

  composer require robmorgan/phinx

官方中文文档地址

รายละเอียดการใช้งานสามารถดูได้ที่เอกสารภาษาจีนอย่างเป็นทางการ ที่นี่จะพูดถึงวิธีการตั้งค่าและการใช้งานใน webman เท่านั้น

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

迁移文件目录结构

.
├── app                           โฟลเดอร์แอปพลิเคชัน
│   ├── controller                โฟลเดอร์ควบคุม
│   │   └── Index.php             ตัวควบคุม
│   ├── model                     โฟลเดอร์โมเดล
......
├── database                      ไฟล์ฐานข้อมูล
│   ├── migrations                ไฟล์การโยกย้าย
│   │   └── 20180426073606_create_user_table.php
│   ├── seeds                     ข้อมูลทดสอบ
│   │   └── UserSeeder.php
......

phinx.php 配置

สร้างไฟล์ phinx.php ที่รากของโปรเจ็ค

<?php
return [
    "paths" => [
        "migrations" => "database/migrations",
        "seeds"      => "database/seeds"
    ],
    "environments" => [
        "default_migration_table" => "phinxlog",
        "default_database"        => "dev",
        "default_environment"     => "dev",
        "dev" => [
            "adapter" => "DB_CONNECTION",
            "host"    => "DB_HOST",
            "name"    => "DB_DATABASE",
            "user"    => "DB_USERNAME",
            "pass"    => "DB_PASSWORD",
            "port"    => "DB_PORT",
            "charset" => "utf8"
        ]
    ]
];

使用建议

ไฟล์การโยกย้ายเมื่อมีการรวมโค้ดแล้วจะไม่อนุญาตให้มีการแก้ไขอีก หากเกิดปัญหาจะต้องสร้างไฟล์การเปลี่ยนแปลงหรือไฟล์ลบเพื่อตรวจสอบ

数据表创建操作文件命名规则

{time(auto create)}_create_{ชื่อ_table_ภาษาอังกฤษที่เป็นตัวพิมพ์เล็ก}

数据表修改操作文件命名规则

{time(auto create)}_modify_{ชื่อ_table_ภาษาอังกฤษที่เป็นตัวพิมพ์เล็ก+การเปลี่ยนแปลงที่เฉพาะเจาะจงในภาษาอังกฤษ}

数据表删除操作文件命名规则

{time(auto create)}_delete_{ชื่อ_table_ภาษาอังกฤษที่เป็นตัวพิมพ์เล็ก+การเปลี่ยนแปลงที่เฉพาะเจาะจงในภาษาอังกฤษ}

填充数据文件命名规则

{time(auto create)}_fill_{ชื่อ_table_ภาษาอังกฤษที่เป็นตัวพิมพ์เล็ก+การเปลี่ยนแปลงที่เฉพาะเจาะจงในภาษาอังกฤษ}