Cài đặt và sử dụng Phinx trong dự án cakephp

Lượt xem: 7906

Cài đặt và sử dụng Phinx trong dự án cakephp

Giớ thiệu về Phinx

Phinx giúp bạn dễ dàng quản lý việc di chuyển (migrations) cơ sở dữ liệu cho ứng dụng PHP của bạn. Trong vòng chưa đầy 5 phút, bạn có thể cài đặt Phinx bằng Composer và tạo lần di chuyển (migrations) cơ sở dữ liệu đầu tiên của mình. Phinx chỉ là về việc di chuyển (migrations) mà không có tất cả sự cồng kềnh của hệ thống ORM cơ sở dữ liệu hoặc khung ứng dụng.

Các nhà phát triển giỏi luôn tạo phiên bản mã của họ bằng hệ thống SCM, vậy tại sao họ không làm điều tương tự cho lược đồ cơ sở dữ liệu của họ?

Phinx cho phép các nhà phát triển thay đổi và thao tác cơ sở dữ liệu một cách rõ ràng và ngắn gọn. Nó tránh sử dụng cách viết SQL bằng tay và thay vào đó cung cấp một API mạnh mẽ để tạo migrations (di chuyển) bằng mã PHP. Sau đó, các nhà phát triển có thể phiên bản hóa những di chuyển này bằng hệ thống SCM ưa thích của họ. Điều này làm cho Phinx migrations linh động giữa các hệ thống cơ sở dữ liệu khác nhau. Phinx theo dõi quá trình migrations nào đã được thực hiện, vì vậy bạn có thể bớt lo lắng về trạng thái cơ sở dữ liệu của mình và thay vào đó tập trung vào việc xây dựng phần mềm tốt hơn.

Phinx được phát triển với các mục tiêu sau:

Di động giữa các nhà cung cấp cơ sở dữ liệu phổ biến nhất

- Là PHP framework độc lập

- Có một quá trình cài đặt đơn giản.

- Có thao tác dòng lệnh dễ sử dụng

Tích hợp với nhiều công cụ PHP khác (Phing, PHPUnit) và các web framework.

Cài đặt Phinx

Phinx nên được cài đặt bằng Composer, một công cụ để quản lý phụ thuộc trong PHP. Xem thêm cài đặt Composer trên window 10

Note: Phinx yêu cầu PHP từ 7.2 (hoặc lớn hơn)

Để cài đặt Phinx, chỉ cần yêu cầu nó bằng Composer


 composer require robmorgan/phinx

Tạo các thư mục trong dự án của bạn theo cấu trúc db/migrations với các quyền thích hợp. Đây là nơi các tệp migrations của bạn sẽ tồn tại và có thể ghi được.

Phinx hiện có thể được thực thi từ bên trong dự án của bạn:


vendor/bin/phinx init

Tạo migrations

Phinx dự vào migrations để chuyển đổi cơ sở dữ liệu của bạn. Mỗi migrations được đại diện bởi một lớp PHP trong một tệp duy nhất. Bạn có thể viết các migrations của mình bằng cách sử dụng API Phinx PHP, nhưng SQL thô cũng được hỗ trợ.

Hãy bắt đầu tạo mới một Phinx migrations. Chạy Phinx bằng lệnh:


$ vendor/bin/phinx create MyNewMigration

Điều này sẽ tạo ra một file migrations mới với định dạng

YYYYMMDDHHMMSS_my_new_migration.php trong đó 14 ký tự đầu tiên được thay thế bằng dấu thời gian hiện tại xuống ký tự thứ hai.

Nếu bạn đã chỉ định nhiều đường dẫn migrations, bạn sẽ được yêu cầu chọn đường dẫn để tạo migrations.

Phinx tự động tạo khung tệp migrations bằng một phương pháp duy nhất:


<?php

use Phinx\Migration\AbstractMigration;

class MyNewMigration extends AbstractMigration
{
    /**
     * Change Method.
     *
     * Write your reversible migrations using this method.
     *
     * More information on writing migrations is available here:
     * https://book.cakephp.org/phinx/0/en/migrations.html#the-change-method
     *
     * Remember to call "create()" or "update()" and NOT "save()" when working
     * with the Table class.
     *
     */
    public function change()
    {

    }
}


Tất cả các Phinx migrations đều mở rộng từ lớp AbstractMigration. Lớp này cung cấp sự hỗ trợ cần thiết để tạo migration cơ sở dữ liệu của bạn.

Cơ sở dữ liệu migrations có thể biến đổi cơ sở dữ liệu của bạn theo nhiều cách như: Tạo bảng mới, chèn hàng, thêm chỉ mục và sử đổi cột.

Ví dụ:


<?php

use Phinx\Migration\AbstractMigration;

class CreateUserLoginsTable extends AbstractMigration
{
    public function change()
    {
        // create the table
        $table = $this->table('categorys');
        $table->addColumn('name', 'string')
              ->addColumn('created', 'datetime')
              ->create();
    }
}


Chạy migrations bạn sử dụng câu lệnh


 vendor/bin/phinx migrate

Tham khảo https://book.cakephp.org/phinx/0/en/migrations.html

Video