Không thể tìm thấy quá trình di chuyển Plugin CakePHP
Di chuyển là một plugin được hỗ trợ bởi nhóm cốt lõi giúp bạn thực hiện các thay đổi lược đồ trong cơ sở dữ liệu của mình bằng cách ghi các tệp PHP có thể được theo dõi bằng hệ thống kiểm soát phiên bản của bạn Nó cho phép bạn phát triển các bảng cơ sở dữ liệu của mình theo thời gian. Thay vì viết các sửa đổi lược đồ trong SQL, plugin này cho phép bạn sử dụng một bộ phương pháp trực quan để thực hiện các thay đổi cơ sở dữ liệu của mình Plugin này là trình bao bọc cho thư viện di chuyển cơ sở dữ liệu Phinx Cài đặtTheo mặc định, Di chuyển được cài đặt với khung ứng dụng mặc định. Nếu bạn đã gỡ bỏ nó và muốn cài đặt lại nó, bạn có thể làm như vậy bằng cách chạy đoạn mã sau từ thư mục ROOT của ứng dụng (nơi trình soạn thảo. json được đặt) php composer.phar require cakephp/migrations "@stable" # Or if composer is installed globally composer require cakephp/migrations "@stable" Để sử dụng plugin, bạn cần tải nó trong config/bootstrap của ứng dụng. tập tin php. Bạn có thể sử dụng shell Plugin của CakePHP để tải và hủy tải các plugin từ cấu hình/bootstrap của mình. php bin/cake plugin load Migrations Hoặc bạn có thể tải plugin bằng cách chỉnh sửa src/Application của mình. php và thêm câu lệnh sau $this->addPlugin('Migrations'); // Prior to 3.6.0 you need to use Plugin::load() Ngoài ra, bạn sẽ cần định cấu hình cấu hình cơ sở dữ liệu mặc định cho ứng dụng của mình trong tệp config/app. php như được giải thích trong Tổng quanDi chuyển về cơ bản là một tệp PHP duy nhất mô tả các thay đổi để vận hành cơ sở dữ liệu. Tệp di chuyển có thể tạo hoặc xóa bảng, thêm hoặc xóa cột, tạo chỉ mục và thậm chí chèn dữ liệu vào cơ sở dữ liệu của bạn Đây là một ví dụ về di chuyển table('products'); $table->addColumn('name', 'string', [ 'default' => null, 'limit' => 255, 'null' => false, ]); $table->addColumn('description', 'text', [ 'default' => null, 'null' => false, ]); $table->addColumn('created', 'datetime', [ 'default' => null, 'null' => false, ]); $table->addColumn('modified', 'datetime', [ 'default' => null, 'null' => false, ]); $table->create(); } } Quá trình di chuyển này sẽ thêm một bảng vào cơ sở dữ liệu của bạn có tên là bin/cake migrations rollback8 với các định nghĩa cột sau
Mẹo Cột khóa chính có tên bin/cake migrations rollback9 sẽ được thêm ngầm Ghi chú Lưu ý rằng tệp này mô tả cơ sở dữ liệu sẽ trông như thế nào sau khi áp dụng quá trình di chuyển. Tại thời điểm này, không có bảng bin/cake migrations rollback8 nào tồn tại trong cơ sở dữ liệu của bạn, chúng tôi chỉ tạo một tệp có thể vừa tạo bảng bin/cake migrations rollback8 với các cột được chỉ định cũng như loại bỏ nó khi thực hiện thao tác di chuyển bin/cake plugin load Migrations82 Khi tệp đã được tạo trong thư mục config/Migrations, bạn sẽ có thể thực thi lệnh bin/cake plugin load Migrations83 sau để tạo bảng trong cơ sở dữ liệu của mình $this->addPlugin('Migrations'); // Prior to 3.6.0 you need to use Plugin::load()0 Lệnh bin/cake plugin load Migrations83 sau đây sẽ thực hiện một bin/cake plugin load Migrations82 và xóa bảng khỏi cơ sở dữ liệu của bạn bin/cake migrations rollback Tạo di chuyểnCác tệp di chuyển được lưu trữ trong thư mục config/Migrations của ứng dụng của bạn. Tên của tệp di chuyển có tiền tố là ngày tạo tệp, ở định dạng YYYYMMDDHHMMSS_MigrationName. php. Dưới đây là ví dụ về tên tệp di chuyển
Cách dễ nhất để tạo tệp di chuyển là sử dụng lệnh bin/cake plugin load Migrations86 CLI Vui lòng đảm bảo rằng bạn đã đọc tài liệu chính thức của Phinx để biết danh sách đầy đủ các phương pháp bạn có thể sử dụng để ghi tệp di chuyển Ghi chú Khi sử dụng tùy chọn bin/cake plugin load Migrations87, bạn vẫn có thể sửa đổi quá trình di chuyển trước khi chạy chúng nếu muốn cú phápCú pháp lệnh bin/cake plugin load Migrations87 theo mẫu bên dưới bin/cake bake migration CreateProducts name:string description:text created modified Khi sử dụng bin/cake plugin load Migrations87 để tạo bảng, thêm cột, v.v. vào cơ sở dữ liệu của bạn, bạn thường sẽ cung cấp hai điều
Do các quy ước, không phải tất cả các thay đổi lược đồ đều có thể được thực hiện thông qua các lệnh shell này Ngoài ra, bạn có thể tạo một tệp di chuyển trống nếu muốn toàn quyền kiểm soát những gì cần được thực thi, bằng cách bỏ qua việc chỉ định định nghĩa cột bin/cake plugin load Migrations8 Tên tệp di chuyểnTên di chuyển có thể theo bất kỳ mẫu nào sau đây
Bạn cũng có thể sử dụng $this->addPlugin('Migrations'); // Prior to 3.6.0 you need to use Plugin::load()98 làm tên cho quá trình di chuyển của mình. e. $this->addPlugin('Migrations'); // Prior to 3.6.0 you need to use Plugin::load()99 Phiên bản mới cakephp/migrations. 1. 5. 2 kể từ v1. 5. 2 của plugin di chuyển, tên tệp di chuyển sẽ được tự động hóa. Phiên bản plugin này chỉ khả dụng với bản phát hành CakePHP >= to 3. 1. Trước phiên bản plugin này, tên di chuyển sẽ ở dạng gạch dưới, tôi. e. bin/cake bake migration CreateProducts name:string description:text created modified0 Cảnh báo Tên di chuyển được sử dụng làm tên lớp di chuyển và do đó có thể xung đột với các lần di chuyển khác nếu tên lớp không phải là duy nhất. Trong trường hợp này, có thể cần phải ghi đè tên theo cách thủ công vào một ngày sau đó hoặc chỉ cần thay đổi tên bạn đang chỉ định Định nghĩa cộtKhi sử dụng các cột trong dòng lệnh, bạn nên nhớ rằng chúng tuân theo mẫu sau $this->addPlugin('Migrations'); // Prior to 3.6.0 you need to use Plugin::load()9 Chẳng hạn, sau đây là tất cả các cách hợp lệ để chỉ định trường email
Trong khi xác định số thập phân, bin/cake bake migration CreateProducts name:string description:text created modified6 có thể được xác định có độ chính xác và tỷ lệ, được phân tách bằng dấu phẩy
Dấu chấm hỏi sau fieldType sẽ làm cho cột trở nên vô giá trị Tham số bin/cake bake migration CreateProducts name:string description:text created modified6 cho bin/cake plugin load Migrations00 là tùy chọn và phải luôn được viết giữa dấu ngoặc Các trường có tên bin/cake bake migration CreateProducts name:string description:text created modified5 và bin/cake bake migration CreateProducts name:string description:text created modified7, cũng như bất kỳ trường nào có hậu tố bin/cake plugin load Migrations03, sẽ tự động được đặt thành loại bin/cake bake migration CreateProducts name:string description:text created modified6 Các loại trường là những loại thường được cung cấp bởi thư viện bin/cake plugin load Migrations05. Đó có thể là
Có một số kinh nghiệm để chọn loại trường khi không được chỉ định hoặc được đặt thành giá trị không hợp lệ. Loại trường mặc định là bin/cake bake migration CreateProducts name:string description:text created modified2
Tạo bảngBạn có thể sử dụng bin/cake plugin load Migrations87 để tạo bảng bin/cake bake migration CreateProducts name:string description:text created modified Dòng lệnh trên sẽ tạo một tệp di chuyển giống như table('products'); $table->addColumn('name', 'string', [ 'default' => null, 'limit' => 255, 'null' => false, ]); $table->addColumn('description', 'text', [ 'default' => null, 'null' => false, ]); $table->addColumn('created', 'datetime', [ 'default' => null, 'null' => false, ]); $table->addColumn('modified', 'datetime', [ 'default' => null, 'null' => false, ]); $table->create(); } } Thêm cột vào bảng hiện cóNếu tên di chuyển trong dòng lệnh có dạng “AddXXXToYYY” và theo sau là danh sách tên và loại cột thì tệp di chuyển chứa mã để tạo cột sẽ được tạo bin/cake plugin load Migrations1 Thực hiện dòng lệnh trên sẽ tạo ra bin/cake plugin load Migrations2 Thêm cột làm chỉ mục vào bảngCũng có thể thêm chỉ mục vào cột bin/cake plugin load Migrations3 sẽ tạo ra bin/cake plugin load Migrations4 Chỉ định độ dài trườngPhiên bản mới cakephp/migrations. 1. 4 Nếu bạn cần chỉ định độ dài trường, bạn có thể thực hiện việc đó trong dấu ngoặc ở loại trường, nghĩa là bin/cake plugin load Migrations5 Thực hiện dòng lệnh trên sẽ tạo ra bin/cake plugin load Migrations6 Nếu không chỉ định độ dài, thì độ dài cho một số loại cột nhất định sẽ được mặc định
Thay đổi một cột từ một bảngTheo cách tương tự, bạn có thể tạo di chuyển để thay đổi cột bằng cách sử dụng dòng lệnh, nếu tên di chuyển có dạng “AlterXXXOnYYY” bin/cake plugin load Migrations7 sẽ tạo ra bin/cake plugin load Migrations8 Xóa một cột khỏi bảngTheo cách tương tự, bạn có thể tạo di chuyển để xóa một cột bằng cách sử dụng dòng lệnh, nếu tên di chuyển có dạng “RemoveXXXFromYYY” bin/cake plugin load Migrations9 tạo tập tin $this->addPlugin('Migrations'); // Prior to 3.6.0 you need to use Plugin::load()0 Ghi chú Lệnh removeColumn không thể đảo ngược, vì vậy phải được gọi trong phương thức up. Một lệnh gọi addColumn tương ứng sẽ được thêm vào phương thức down Tạo di chuyển từ cơ sở dữ liệu hiện cóNếu bạn đang xử lý một cơ sở dữ liệu có sẵn và muốn bắt đầu sử dụng di chuyển hoặc để kiểm soát phiên bản lược đồ ban đầu của cơ sở dữ liệu ứng dụng của bạn, bạn có thể chạy lệnh bin/cake plugin load Migrations08 $this->addPlugin('Migrations'); // Prior to 3.6.0 you need to use Plugin::load()1 Nó sẽ tạo một tệp di chuyển có tên YYYYMMDDHHMMSS_Initial. php chứa tất cả các câu lệnh tạo cho tất cả các bảng trong cơ sở dữ liệu của bạn Theo mặc định, ảnh chụp nhanh sẽ được tạo bằng cách kết nối với cơ sở dữ liệu được xác định trong cấu hình kết nối bin/cake plugin load Migrations09. Nếu bạn cần tạo ảnh chụp nhanh từ một nguồn dữ liệu khác, bạn có thể sử dụng tùy chọn bin/cake plugin load Migrations10 $this->addPlugin('Migrations'); // Prior to 3.6.0 you need to use Plugin::load()2 Bạn cũng có thể đảm bảo ảnh chụp nhanh chỉ bao gồm các bảng mà bạn đã xác định các lớp mô hình tương ứng bằng cách sử dụng cờ bin/cake plugin load Migrations11 $this->addPlugin('Migrations'); // Prior to 3.6.0 you need to use Plugin::load()3 Khi sử dụng cờ bin/cake plugin load Migrations11, trình bao sẽ xem qua các lớp bin/cake plugin load Migrations13 của ứng dụng của bạn và sẽ chỉ thêm các bảng mô hình vào ảnh chụp nhanh Logic tương tự sẽ được áp dụng hoàn toàn nếu bạn muốn tạo ảnh chụp nhanh cho plugin. Để làm như vậy, bạn cần sử dụng tùy chọn bin/cake plugin load Migrations14 $this->addPlugin('Migrations'); // Prior to 3.6.0 you need to use Plugin::load()4 Chỉ những bảng có lớp mô hình đối tượng bin/cake plugin load Migrations13 được xác định mới được thêm vào ảnh chụp nhanh plugin của bạn Ghi chú Khi tạo ảnh chụp nhanh cho một plugin, các tệp di chuyển sẽ được tạo trong thư mục config/Migrations của plugin của bạn Xin lưu ý rằng khi bạn nướng ảnh chụp nhanh, nó sẽ tự động được thêm vào bảng nhật ký phinx khi được di chuyển Tạo khác biệt giữa hai trạng thái cơ sở dữ liệuPhiên bản mới cakephp/migrations. 1. 6. 0 Bạn có thể tạo tệp di chuyển sẽ nhóm tất cả sự khác biệt giữa hai trạng thái cơ sở dữ liệu bằng cách sử dụng mẫu nướng bin/cake plugin load Migrations16. Để làm như vậy, bạn có thể sử dụng lệnh sau $this->addPlugin('Migrations'); // Prior to 3.6.0 you need to use Plugin::load()5 Để có điểm so sánh từ trạng thái cơ sở dữ liệu hiện tại của bạn, trình bao di chuyển sẽ tạo tệp "kết xuất" sau mỗi lệnh gọi bin/cake plugin load Migrations17 hoặc bin/cake plugin load Migrations82. Tệp kết xuất là một tệp chứa trạng thái lược đồ đầy đủ của cơ sở dữ liệu của bạn tại một thời điểm nhất định Khi tệp kết xuất được tạo, mọi sửa đổi bạn thực hiện trực tiếp trong hệ thống quản lý cơ sở dữ liệu của mình sẽ được thêm vào tệp di chuyển được tạo khi bạn gọi lệnh bin/cake plugin load Migrations19 Theo mặc định, khác biệt sẽ được tạo bằng cách kết nối với cơ sở dữ liệu được xác định trong cấu hình kết nối bin/cake plugin load Migrations09. Nếu bạn cần tạo khác biệt từ một nguồn dữ liệu khác, bạn có thể sử dụng tùy chọn bin/cake plugin load Migrations10 $this->addPlugin('Migrations'); // Prior to 3.6.0 you need to use Plugin::load()6 Nếu bạn muốn sử dụng tính năng tìm khác biệt trên một ứng dụng đã có lịch sử di chuyển, bạn cần tạo thủ công tệp kết xuất sẽ được sử dụng để so sánh Trạng thái cơ sở dữ liệu phải giống như trạng thái nếu bạn vừa di chuyển tất cả các lần di chuyển của mình trước khi tạo tệp kết xuất. Khi tệp kết xuất được tạo, bạn có thể bắt đầu thực hiện các thay đổi trong cơ sở dữ liệu của mình và sử dụng lệnh bin/cake plugin load Migrations19 bất cứ khi nào bạn thấy phù hợp Ghi chú Shell di chuyển không thể phát hiện việc đổi tên cột Các lệnhbin/cake plugin load Migrations 17. Áp dụng di chuyểnKhi bạn đã tạo hoặc ghi tệp di chuyển của mình, bạn cần thực hiện lệnh sau để áp dụng các thay đổi cho cơ sở dữ liệu của mình $this->addPlugin('Migrations'); // Prior to 3.6.0 you need to use Plugin::load()7 bin/cake plugin load Migrations 82. Hoàn nguyên di chuyểnLệnh Rollback được sử dụng để hoàn tác các lần di chuyển trước đó được thực hiện bởi plugin này. Đó là hành động ngược lại của lệnh bin/cake plugin load Migrations17 $this->addPlugin('Migrations'); // Prior to 3.6.0 you need to use Plugin::load()8 Bạn cũng có thể sử dụng các tùy chọn bin/cake plugin load Migrations26, bin/cake plugin load Migrations10 và bin/cake plugin load Migrations14 giống như đối với lệnh bin/cake plugin load Migrations17 bin/cake plugin load Migrations 30. Trạng thái di chuyểnLệnh Trạng thái in danh sách tất cả các lần di chuyển, cùng với trạng thái hiện tại của chúng. Bạn có thể sử dụng lệnh này để xác định những lần di chuyển nào đã được chạy $this->addPlugin('Migrations'); // Prior to 3.6.0 you need to use Plugin::load()9 Bạn cũng có thể xuất kết quả dưới dạng chuỗi có định dạng JSON bằng cách sử dụng tùy chọn bin/cake plugin load Migrations31 (hoặc viết tắt là bin/cake plugin load Migrations32) table('products'); $table->addColumn('name', 'string', [ 'default' => null, 'limit' => 255, 'null' => false, ]); $table->addColumn('description', 'text', [ 'default' => null, 'null' => false, ]); $table->addColumn('created', 'datetime', [ 'default' => null, 'null' => false, ]); $table->addColumn('modified', 'datetime', [ 'default' => null, 'null' => false, ]); $table->create(); } }0 Bạn cũng có thể sử dụng các tùy chọn bin/cake plugin load Migrations26, bin/cake plugin load Migrations10 và bin/cake plugin load Migrations14 giống như đối với lệnh bin/cake plugin load Migrations17 bin/cake plugin load Migrations 37. Đánh dấu di chuyển là đã di chuyểnĐôi khi có thể hữu ích khi đánh dấu một tập hợp các lần di chuyển là đã di chuyển mà không thực sự chạy chúng. Để làm điều này, bạn có thể sử dụng lệnh bin/cake plugin load Migrations37. Lệnh hoạt động trơn tru như các lệnh khác Bạn có thể đánh dấu tất cả các lần di chuyển là đã di chuyển bằng lệnh này table('products'); $table->addColumn('name', 'string', [ 'default' => null, 'limit' => 255, 'null' => false, ]); $table->addColumn('description', 'text', [ 'default' => null, 'null' => false, ]); $table->addColumn('created', 'datetime', [ 'default' => null, 'null' => false, ]); $table->addColumn('modified', 'datetime', [ 'default' => null, 'null' => false, ]); $table->create(); } }1 Bạn cũng có thể đánh dấu tất cả các lần di chuyển lên một phiên bản cụ thể là đã di chuyển bằng cách sử dụng tùy chọn bin/cake plugin load Migrations39 table('products'); $table->addColumn('name', 'string', [ 'default' => null, 'limit' => 255, 'null' => false, ]); $table->addColumn('description', 'text', [ 'default' => null, 'null' => false, ]); $table->addColumn('created', 'datetime', [ 'default' => null, 'null' => false, ]); $table->addColumn('modified', 'datetime', [ 'default' => null, 'null' => false, ]); $table->create(); } }2 Nếu bạn không muốn di chuyển được nhắm mục tiêu được đánh dấu là đã di chuyển trong quá trình, bạn có thể sử dụng cờ bin/cake plugin load Migrations40 với nó table('products'); $table->addColumn('name', 'string', [ 'default' => null, 'limit' => 255, 'null' => false, ]); $table->addColumn('description', 'text', [ 'default' => null, 'null' => false, ]); $table->addColumn('created', 'datetime', [ 'default' => null, 'null' => false, ]); $table->addColumn('modified', 'datetime', [ 'default' => null, 'null' => false, ]); $table->create(); } }3 Cuối cùng, nếu bạn chỉ muốn đánh dấu di chuyển được nhắm mục tiêu là đã di chuyển, bạn có thể sử dụng cờ bin/cake plugin load Migrations41 table('products'); $table->addColumn('name', 'string', [ 'default' => null, 'limit' => 255, 'null' => false, ]); $table->addColumn('description', 'text', [ 'default' => null, 'null' => false, ]); $table->addColumn('created', 'datetime', [ 'default' => null, 'null' => false, ]); $table->addColumn('modified', 'datetime', [ 'default' => null, 'null' => false, ]); $table->create(); } }4 Bạn cũng có thể sử dụng các tùy chọn bin/cake plugin load Migrations26, bin/cake plugin load Migrations10 và bin/cake plugin load Migrations14 giống như đối với lệnh bin/cake plugin load Migrations17 Ghi chú Khi bạn tạo ảnh chụp nhanh bằng lệnh bin/cake plugin load Migrations46, quá trình di chuyển đã tạo sẽ tự động được đánh dấu là đã di chuyển Lệnh này mong đợi số phiên bản di chuyển làm đối số table('products'); $table->addColumn('name', 'string', [ 'default' => null, 'limit' => 255, 'null' => false, ]); $table->addColumn('description', 'text', [ 'default' => null, 'null' => false, ]); $table->addColumn('created', 'datetime', [ 'default' => null, 'null' => false, ]); $table->addColumn('modified', 'datetime', [ 'default' => null, 'null' => false, ]); $table->create(); } }5 Nếu bạn muốn đánh dấu tất cả các lần di chuyển là đã di chuyển, bạn có thể sử dụng giá trị đặc biệt bin/cake plugin load Migrations47. Nếu bạn sử dụng nó, nó sẽ đánh dấu tất cả các lần di chuyển được tìm thấy là đã di chuyển table('products'); $table->addColumn('name', 'string', [ 'default' => null, 'limit' => 255, 'null' => false, ]); $table->addColumn('description', 'text', [ 'default' => null, 'null' => false, ]); $table->addColumn('created', 'datetime', [ 'default' => null, 'null' => false, ]); $table->addColumn('modified', 'datetime', [ 'default' => null, 'null' => false, ]); $table->create(); } }6 bin/cake plugin load Migrations 48. Tạo cơ sở dữ liệu của bạnkể từ 1. 5. 5, bạn có thể sử dụng trình bao bin/cake plugin load Migrations83 để khởi tạo cơ sở dữ liệu của mình. Điều này tận dụng tính năng hạt giống của thư viện Phinx. Theo mặc định, các tệp hạt giống sẽ được tìm trong thư mục bin/cake plugin load Migrations50 của ứng dụng của bạn. Hãy chắc chắn rằng bạn làm theo Đối với việc di chuyển, giao diện bin/cake plugin load Migrations87 được cung cấp cho các tệp hạt giống table('products'); $table->addColumn('name', 'string', [ 'default' => null, 'limit' => 255, 'null' => false, ]); $table->addColumn('description', 'text', [ 'default' => null, 'null' => false, ]); $table->addColumn('created', 'datetime', [ 'default' => null, 'null' => false, ]); $table->addColumn('modified', 'datetime', [ 'default' => null, 'null' => false, ]); $table->create(); } }7 Phiên bản mới cakephp/migrations. 1. 6. 4 Các tùy chọn bin/cake plugin load Migrations52, bin/cake plugin load Migrations53 và bin/cake plugin load Migrations54 đã được thêm vào để xuất dữ liệu từ cơ sở dữ liệu của bạn kể từ 1. 6. 4, lệnh bin/cake plugin load Migrations55 cho phép bạn tạo một tệp hạt giống với dữ liệu được xuất từ cơ sở dữ liệu của bạn bằng cách sử dụng cờ bin/cake plugin load Migrations52 table('products'); $table->addColumn('name', 'string', [ 'default' => null, 'limit' => 255, 'null' => false, ]); $table->addColumn('description', 'text', [ 'default' => null, 'null' => false, ]); $table->addColumn('created', 'datetime', [ 'default' => null, 'null' => false, ]); $table->addColumn('modified', 'datetime', [ 'default' => null, 'null' => false, ]); $table->create(); } }8 Theo mặc định, nó sẽ xuất tất cả các hàng được tìm thấy trong bảng của bạn. Bạn có thể giới hạn số hàng được xuất bằng cách sử dụng tùy chọn bin/cake plugin load Migrations53 table('products'); $table->addColumn('name', 'string', [ 'default' => null, 'limit' => 255, 'null' => false, ]); $table->addColumn('description', 'text', [ 'default' => null, 'null' => false, ]); $table->addColumn('created', 'datetime', [ 'default' => null, 'null' => false, ]); $table->addColumn('modified', 'datetime', [ 'default' => null, 'null' => false, ]); $table->create(); } }9 Nếu bạn chỉ muốn đưa một số trường đã chọn từ bảng vào tệp hạt giống của mình, bạn có thể sử dụng tùy chọn bin/cake plugin load Migrations54. Nó lấy danh sách các trường để đưa vào dưới dạng chuỗi giá trị được phân tách bằng dấu phẩy $this->addPlugin('Migrations'); // Prior to 3.6.0 you need to use Plugin::load()00 Mẹo Tất nhiên bạn có thể sử dụng cả hai tùy chọn bin/cake plugin load Migrations53 và bin/cake plugin load Migrations54 trong cùng một lệnh gọi Để tạo cơ sở dữ liệu của bạn, bạn có thể sử dụng lệnh phụ bin/cake plugin load Migrations48 $this->addPlugin('Migrations'); // Prior to 3.6.0 you need to use Plugin::load()01 Xin lưu ý rằng, trái ngược với việc di chuyển, các bộ gieo hạt không được theo dõi, điều đó có nghĩa là cùng một bộ gieo hạt có thể được áp dụng nhiều lần Gọi một Seeder từ một Seeder khácPhiên bản mới cakephp/migrations. 1. 6. 2 Thông thường khi seeding phải tuân thủ thứ tự chèn dữ liệu để không vi phạm ràng buộc. Vì Seeder được thực thi theo thứ tự bảng chữ cái theo mặc định, nên bạn có thể sử dụng phương thức bin/cake plugin load Migrations62 để xác định trình tự thực thi seeder của riêng mình $this->addPlugin('Migrations'); // Prior to 3.6.0 you need to use Plugin::load()02 Ghi chú Đảm bảo mở rộng plugin Migration lớp bin/cake plugin load Migrations63 nếu bạn muốn có thể sử dụng phương thức bin/cake plugin load Migrations64. Lớp này đã được thêm vào với bản phát hành 1. 6. 2 bin/cake plugin load Migrations 65. Tạo tệp kết xuất cho tính năng nướng khácLệnh Dump tạo một tệp được sử dụng với mẫu nướng bin/cake plugin load Migrations16 Mỗi tệp kết xuất được tạo là dành riêng cho Kết nối mà nó được tạo từ đó (và có hậu tố như vậy). Điều này cho phép lệnh bin/cake plugin load Migrations19 tính toán khác biệt chính xác trong trường hợp ứng dụng của bạn đang xử lý nhiều cơ sở dữ liệu có thể từ các nhà cung cấp cơ sở dữ liệu khác nhau Tệp kết xuất được tạo trong cùng thư mục với tệp di chuyển của bạn Bạn cũng có thể sử dụng các tùy chọn bin/cake plugin load Migrations26, bin/cake plugin load Migrations10 và bin/cake plugin load Migrations14 giống như đối với lệnh bin/cake plugin load Migrations17 Sử dụng di chuyển cho các bài kiểm traNếu bạn đang sử dụng các lần di chuyển cho lược đồ ứng dụng của mình, bạn cũng có thể sử dụng các lần di chuyển tương tự đó để xây dựng lược đồ trong các thử nghiệm của mình. Trong tệp bin/cake plugin load Migrations72 của ứng dụng, bạn có thể sử dụng lớp bin/cake plugin load Migrations73 để xây dựng lược đồ khi chạy thử nghiệm. bin/cake plugin load Migrations73 sẽ sử dụng lược đồ hiện có nếu nó là lược đồ hiện tại và nếu lịch sử di chuyển trong cơ sở dữ liệu khác với lịch sử trong hệ thống tệp, tất cả các bảng sẽ bị hủy và quá trình di chuyển sẽ được chạy lại từ đầu $this->addPlugin('Migrations'); // Prior to 3.6.0 you need to use Plugin::load()03 Nếu bạn cần chạy nhiều nhóm di chuyển, chúng có thể được chạy như sau $this->addPlugin('Migrations'); // Prior to 3.6.0 you need to use Plugin::load()04 Nếu cơ sở dữ liệu của bạn cũng chứa các bảng không được quản lý bởi ứng dụng của bạn giống như các bảng được tạo bởi PostGIS, thì bạn có thể loại trừ các bảng đó khỏi hành vi thả & cắt bớt bằng cách sử dụng tùy chọn bin/cake plugin load Migrations75 $this->addPlugin('Migrations'); // Prior to 3.6.0 you need to use Plugin::load()05 Tùy chọn bin/cake plugin load Migrations75 chấp nhận mẫu tương thích với bin/cake plugin load Migrations77 để loại trừ các bảng khỏi thao tác thả và cắt bớt Nếu bạn cần xem đầu ra gỡ lỗi bổ sung từ quá trình di chuyển đang được chạy, bạn có thể bật trình ghi nhật ký cấp độ bin/cake plugin load Migrations78 Sử dụng di chuyển trong pluginCác plugin cũng có thể cung cấp các tệp di chuyển. Điều này làm cho các plugin dự định phân phối trở nên di động và dễ cài đặt hơn nhiều. Tất cả các lệnh trong plugin Di chuyển đều hỗ trợ tùy chọn bin/cake plugin load Migrations14 hoặc bin/cake plugin load Migrations80 sẽ xác định phạm vi thực thi đối với các lần di chuyển liên quan đến plugin đó $this->addPlugin('Migrations'); // Prior to 3.6.0 you need to use Plugin::load()06 Chạy Di chuyển trong môi trường không có shellPhiên bản mới cakephp/migrations. 1. 2. 0 Kể từ khi phát hành phiên bản 1. 2 của plugin di chuyển, bạn có thể chạy di chuyển từ môi trường không phải trình bao, trực tiếp từ một ứng dụng, bằng cách sử dụng lớp bin/cake plugin load Migrations81 mới. Điều này có thể hữu ích trong trường hợp bạn đang phát triển trình cài đặt plugin cho CMS chẳng hạn. Lớp bin/cake plugin load Migrations81 cho phép bạn chạy các lệnh sau từ trình bao di chuyển
Mỗi lệnh này có một phương thức được định nghĩa trong lớp bin/cake plugin load Migrations81 Đây là cách sử dụng nó $this->addPlugin('Migrations'); // Prior to 3.6.0 you need to use Plugin::load()07 Các phương thức có thể chấp nhận một mảng các tham số phù hợp với các tùy chọn từ các lệnh $this->addPlugin('Migrations'); // Prior to 3.6.0 you need to use Plugin::load()08 Bạn có thể chuyển bất kỳ tùy chọn nào mà lệnh shell sẽ thực hiện. Ngoại lệ duy nhất là lệnh bin/cake plugin load Migrations84 đang mong đợi số phiên bản của các lần di chuyển được đánh dấu là đã di chuyển làm đối số đầu tiên. Truyền mảng tham số làm đối số thứ hai cho phương thức này Theo tùy chọn, bạn có thể truyền các tham số này vào hàm tạo của lớp. Chúng sẽ được sử dụng như mặc định và điều này sẽ giúp bạn không phải chuyển chúng trong mỗi lệnh gọi phương thức $this->addPlugin('Migrations'); // Prior to 3.6.0 you need to use Plugin::load()09 Nếu bạn cần ghi đè một hoặc nhiều tham số mặc định cho một lần gọi, bạn có thể chuyển chúng vào phương thức bin/cake migrations rollback0 Các mẹo và thủ thuậtTạo khóa chính tùy chỉnhNếu bạn cần tránh việc tự động tạo khóa chính bin/cake migrations rollback9 khi thêm bảng mới vào cơ sở dữ liệu, bạn có thể sử dụng đối số thứ hai của phương thức bin/cake plugin load Migrations86 bin/cake migrations rollback1 Ở trên sẽ tạo một cột bin/cake plugin load Migrations87 bin/cake migrations rollback9 cũng là khóa chính Ghi chú Khi chỉ định một khóa chính tùy chỉnh trên dòng lệnh, bạn phải lưu ý nó là khóa chính trong trường id, nếu không, bạn có thể gặp lỗi liên quan đến các trường id trùng lặp, tôi. e bin/cake migrations rollback2 Ngoài ra, vì Migrations 1. 3, một cách mới để xử lý khóa chính đã được giới thiệu. Để làm như vậy, lớp di chuyển của bạn nên mở rộng lớp bin/cake plugin load Migrations89 mới. Bạn có thể chỉ định một thuộc tính bin/cake plugin load Migrations90 trong lớp Migration và đặt nó thành bin/cake plugin load Migrations91, điều này sẽ tắt tính năng tạo cột bin/cake migrations rollback9 tự động. Bạn sẽ cần tạo cột theo cách thủ công sẽ được sử dụng làm khóa chính và thêm nó vào phần khai báo bảng bin/cake migrations rollback3 So với cách xử lý khóa chính trước đây, phương pháp này cung cấp cho bạn khả năng kiểm soát nhiều hơn đối với định nghĩa cột khóa chính. không dấu hay không, giới hạn, nhận xét, v.v. Tất cả các lần di chuyển và ảnh chụp nhanh sẽ sử dụng cách mới này khi cần thiết Cảnh báo Xử lý khóa chính chỉ có thể được thực hiện trên các thao tác tạo bảng. Điều này là do những hạn chế đối với một số máy chủ cơ sở dữ liệu mà plugin hỗ trợ bộ sưu tậpNếu bạn cần tạo một bảng có đối chiếu khác với đối chiếu mặc định của cơ sở dữ liệu, bạn có thể xác định nó bằng phương thức bin/cake plugin load Migrations86, như một tùy chọn bin/cake migrations rollback4 Tuy nhiên, lưu ý rằng điều này chỉ có thể được thực hiện khi tạo bảng. hiện tại không có cách nào để thêm cột vào bảng hiện có với đối chiếu khác với bảng hoặc cơ sở dữ liệu. Hiện tại chỉ có bin/cake plugin load Migrations94 và bin/cake plugin load Migrations95 hỗ trợ khóa cấu hình này Cập nhật tên cột và sử dụng các đối tượng BảngNếu bạn sử dụng một đối tượng CakePHP ORM Table để thao tác các giá trị từ cơ sở dữ liệu của bạn cùng với việc đổi tên hoặc xóa một cột, hãy đảm bảo rằng bạn tạo một phiên bản mới của đối tượng Table sau lệnh gọi bin/cake plugin load Migrations96. Sổ đăng ký đối tượng Bảng bị xóa sau cuộc gọi bin/cake plugin load Migrations96 để làm mới lược đồ được phản ánh và lưu trữ trong đối tượng Bảng khi khởi tạo Di chuyển và triển khaiNếu bạn sử dụng plugin khi triển khai ứng dụng của mình, hãy nhớ xóa bộ đệm ORM để nó làm mới siêu dữ liệu cột của bảng của bạn. Nếu không, bạn có thể gặp lỗi về các cột không tồn tại khi thực hiện các thao tác trên các cột mới đó. CakePHP Core bao gồm Schema Cache Shell mà bạn có thể sử dụng để thực hiện thao tác này bin/cake migrations rollback5 Đổi tên bảngPlugin cung cấp cho bạn khả năng đổi tên bảng, sử dụng phương pháp bin/cake plugin load Migrations98. Trong tệp di chuyển của bạn, bạn có thể làm như sau bin/cake migrations rollback6 Bỏ qua việc tạo tệp bin/cake plugin load Migrations 99Phiên bản mới cakephp/migrations. 1. 6. 5 Để tính năng tìm khác biệt hoạt động, một. lock được tạo mỗi khi bạn di chuyển, khôi phục hoặc tạo ảnh chụp nhanh, để theo dõi trạng thái lược đồ cơ sở dữ liệu của bạn tại bất kỳ thời điểm nào. Ví dụ: bạn có thể bỏ qua việc tạo tệp này khi triển khai trên môi trường sản xuất của mình bằng cách sử dụng tùy chọn $this->addPlugin('Migrations'); // Prior to 3.6.0 you need to use Plugin::load()00 cho lệnh đã nói ở trên bin/cake migrations rollback7 Hỗ trợ tự động hoàn thành IDEPlugin IdeHelper có thể giúp bạn nhận được nhiều hỗ trợ IDE hơn cho các bảng, tên cột của chúng và các loại cột có thể có. PHPStorm cụ thể hiểu thông tin meta và có thể giúp bạn tự động hoàn thành những thông tin đó |