12/08/2018, 15:30

Database Migrations in PHP With Phinx

Database Migration là một trong những công việc thường gặp trong mỗi dự án. Chúng ta muốn chia sẻ cấu trúc dữ liệu, chia sẻ data? Nếu phải export dữ liệu, cấu trúc DB rồi chờ import thì chắc chắn sẽ tốn rất nhiều thời gian. Vì thế, migration trở nên thiết yếu trong các project php. Và đối với ...

Database Migration là một trong những công việc thường gặp trong mỗi dự án. Chúng ta muốn chia sẻ cấu trúc dữ liệu, chia sẻ data? Nếu phải export dữ liệu, cấu trúc DB rồi chờ import thì chắc chắn sẽ tốn rất nhiều thời gian. Vì thế, migration trở nên thiết yếu trong các project php. Và đối với những project không sử dụng framework, đó là một giải pháp hữu hiệu để quản lý cập nhật database.

Bạn quản lí code bằng git như database, một thành phần quan trọng không kém là database thì không được như vậy. Vì vậy migration được tạo ra để quản lí sự thay đổi cấu trúc dữ liệu. Việc sử dụng migration sẽ giúp bạn giảm nhẹ công việc khi deploy ứng dụng.

Migration là một tính năng được "vay mượn" từ Rails - Ruby framework, rất hữu dụng khi chúng ta thay đổi database (thường là MySQL) và muốn quản lý version của những lần thay đổi đó.

Đa phần các framework lớn đều tích hợp hoặc dựng sẵn một migration chẳng hạn:

  • Doctrine
  • Cakephp migration
  • Phalcon Devtools
  • CakePHP Phinx ...

Hôm nay chúng ta sẽ tìm hiểu về Phinx Migration. Phinx được tạo ra bởi Rob Morgan. Hiện nay, Phinx được chuyển sang quyền sở hữu của CakePHP.

  • Dễ dàng, linh hoạt chuyển đổi.
  • Sử dụng độc lập.
  • Cài đặt đơn giản.
  • Dễ dàng sử dụng qua cửa sổ dòng lệnh.
  • Dễ dàng tích hợp với các công cụ khác như Phing, PHPUnit hoặc vào các framework khác.

phinx có thể cài đặt dễ dàng bằng composer. Bạn có thể thêm những dòng sau vào composer.json và chạy composer install

{
  "require": {
    "robmorgan/phinx": "*"
  },
}

Hoặc gọi trực tiếp bằng lệnh:

composer require robmorgan/phinx --dev

Kiểm tra xem đã cài đặt thành công chưa nào:

php vendor/bin/phinx

Kết quả hiện lên như thế này là chúng ta đã cài đặt thành công rồi             </div>
            
            <div class=

0