Các lược đồ cơ sở dữ liệu có thể được sửa đổi từ trạng thái hiện tại của chúng sang trạng thái mong muốn thông qua quá trình di chuyển. Điều này có thể bao gồm thêm bảng và cột, xóa mục hoặc thay đổi loại và ràng buộc Show
Chẳng hạn, nếu bạn đang làm việc trong một dự án nhóm và cần sửa đổi các yêu cầu của ứng dụng, bạn có thể cân nhắc việc thay đổi cơ sở dữ liệu Thông thường, một bản cập nhật. tệp sql được chia sẻ với từng thành viên trong nhóm để nhập vào cơ sở dữ liệu của họ. Tuy nhiên, cách tiếp cận này không lý tưởng cũng như không thể mở rộng vì nhiều thứ có thể sai và khiến ứng dụng bị hỏng. Ví dụ: một thành viên trong nhóm có thể quên nhập tệp vào cơ sở dữ liệu của họ hoặc thậm chí nhập phiên bản lỗi thời của tệp. tập tin sql Di chuyển hoạt động giống như kiểm soát phiên bản cho cơ sở dữ liệu của bạn, cho phép nhóm của bạn chia sẻ và xác định lược đồ cơ sở dữ liệu ứng dụng của bạn. Di chuyển Laravel rất cần thiết vì chúng giúp bạn giải quyết các vấn đề cộng tác cơ sở dữ liệu như vậy cho một nhóm. Các thành viên trong nhóm của bạn sẽ không cần cập nhật cơ sở dữ liệu của họ theo cách thủ công bất cứ khi nào họ lấy các thay đổi của bạn từ kiểm soát nguồn Trong hướng dẫn này, bạn sẽ tìm hiểu tầm quan trọng của việc di chuyển trong ứng dụng Laravel của mình cũng như các lợi ích khác nhau của việc di chuyển Laravel cùng với các trường hợp sử dụng. Bạn cũng sẽ tìm hiểu các hành động, lệnh và sự kiện di chuyển khác nhau Laravel Migration là gì?Di chuyển Laravel cho phép các nhà phát triển nhanh chóng tạo, xóa và sửa đổi cơ sở dữ liệu ứng dụng mà không cần đăng nhập vào trình quản lý cơ sở dữ liệu hoặc thực hiện bất kỳ truy vấn SQL nào. Điều quan trọng cần biết là Laravel cung cấp. Bạn ít có khả năng gặp phải các vấn đề hỗ trợ khi sử dụng chúng. Chúng bao gồm những điều sau đây
Tại sao bạn lại sử dụng Laravel Migration?Ngoài việc kiểm soát phiên bản, quá trình di chuyển giúp tự động hóa việc triển khai và tạo cơ sở dữ liệu tạm thời để chạy thử nghiệm dễ dàng hơn. Chúng cho phép bạn dễ dàng cấu trúc các mô hình và bảng của mình và là một tính năng cần thiết cho các trình gieo hạt trong ứng dụng của bạn
Di chuyển cũng hỗ trợ các nhà phát triển bằng cách hỗ trợ tổ chức môi trường, xác thực và triển khai an toàn các sửa đổi lược đồ Với việc di chuyển, bạn có thể thay đổi các trường trong cơ sở dữ liệu của mình mà không cần xóa các bản ghi hiện có. Laravel theo dõi các lần di chuyển đã thực hiện trong cơ sở dữ liệu. Kết quả là, cơ sở dữ liệu có thể phát triển khi yêu cầu ứng dụng thay đổi Cách tạo di chuyểnMỗi tệp di chuyển xác định một bảng trong cơ sở dữ liệu của bạn. Nó chứa lược đồ để tạo hoặc sửa đổi bảng đó trong cơ sở dữ liệu. Laravel sử dụng lệnh Artisan 8 để tạo chuyển đổi cơ sở dữ liệu
Lệnh tạo một tệp di chuyển trong thư mục cơ sở dữ liệu/di chuyển của ứng dụng của bạn. Laravel sử dụng tiền tố dấu thời gian trong tên tệp di chuyển để xác định thứ tự của các lần di chuyển—ví dụ: 9Laravel cố gắng xác định tên bảng và hành động di chuyển dựa trên tên tệp. Nó cũng điền trước tệp di chuyển với tên bảng được chỉ định từ dự đoán đã thử. Bạn có thể tự xác định tên bảng trong tệp di chuyển nếu lần thử không thành công Bạn có thể chỉ định một đường dẫn cụ thể trong ứng dụng của mình để di chuyển được tạo bằng cách sử dụng đối số 0 với lệnh 8
Cơ cấu di cưTệp di chuyển được tạo có định nghĩa lớp với các phương thức 2 và 3 theo mặc định. Phương thức 2 được gọi mỗi khi bạn chạy di chuyển. Tuy nhiên, phương thức 3 được gọi bất cứ khi nào quá trình di chuyển cơ sở dữ liệu quay trở lạiBạn có thể thay đổi cơ sở dữ liệu bằng cách thêm các bảng, cột hoặc chỉ mục mới bằng cách sử dụng phương thức 6, trong khi phương thức 3 thực hiện các thao tác của phương thức 6 theo hướng ngược lại. Ví dụ: phương thức 6 chứa lược đồ để tạo bảng mới, thêm cột mới vào bảng hoặc sửa đổi cột hiện có, trong khi phương thức 40 chứa lược đồ để thực hiện ngược lại, như xóa bảng, xóa cột, v.v.Bây giờ, bạn có thể sử dụng để tạo hoặc sửa đổi bảng theo bất kỳ phương pháp nào trong số này Hãy xác định một di chuyển để tạo một bảng có tên là người dùng
41 cho thấy rằng chúng tôi đang tạo một bảng. 42 loại bỏ bảng đã chỉ định (trong trường hợp này là 'người dùng') nếu bảng đó tồn tại trên cơ sở dữ liệu bất cứ khi nào quá trình di chuyển quay lạiChạy di chuyểnTrước khi chạy di chuyển của bạn,. cập nhật các. env trong thư mục gốc của ứng dụng với cấu hình cơ sở dữ liệu phù hợp với ví dụ sau, thay thế trình giữ chỗ bằng chi tiết cho cơ sở dữ liệu của bạn
Xóa bộ đệm là tùy chọn nhưng có thể cần thiết ở đây. Chạy lệnh sau trong terminal để làm điều đó 4Sử dụng lệnh Artisan 43 để thực hiện tất cả các lần di chuyển đang chờ xử lý của bạn tới cơ sở dữ liệu 1Dựa trên quá trình di chuyển được xác định trước đó, bạn sẽ thấy bảng người dùng trong cơ sở dữ liệu của mình với năm cột. 44, 45, 46, 47 và 48. 49 trong tệp di chuyển của bạn tạo các cột 47 và 48 cho cơ sở dữ liệuBảng, cột và chỉ mụcMột cơ sở dữ liệu chứa nhiều bảng. Cả cột và hàng đều có mặt trong mọi bảng Chỉ mục là một cấu trúc dữ liệu hỗ trợ các hoạt động truy xuất dữ liệu dễ dàng trên các bảng với chi phí ghi bổ sung và không gian lưu trữ cần thiết để duy trì cấu trúc dữ liệu chỉ mục. Thay vì tìm kiếm qua từng hàng mỗi khi truy cập bảng cơ sở dữ liệu, bạn có thể sử dụng chỉ mục để định vị dữ liệu nhanh chóng Những cái bànTạo bảngBảng là tập hợp các đối tượng dữ liệu trong cơ sở dữ liệu được tổ chức theo định dạng bảng bao gồm các hàng và cột Bạn có thể sử dụng phương thức 12 trên Schema facade để tạo một bảng cơ sở dữ liệu mới. Phương thức 12 nhận hai đối số. tên của bảng làm đối số đầu tiên và một bao đóng chấp nhận đối tượng Blueprint để xác định bảng mới làm đối số thứ haiNhư bạn có thể thấy trong đoạn mã bên dưới, 14 chấp nhận 'người dùng', là tên bảng, làm đối số đầu tiên của chúng tôi. Đối số thứ hai là một hàm đóng trong đó lớp Blueprint với đối tượng $table của nó được truyền dưới dạng tham số. Đối tượng $table này được sử dụng để tạo/sửa đổi một cột cho bảng 15 4 16. Điều này tạo ra một cột chuỗi có tên trong bảng người dùng 17. Điều này tạo ra một cột ID tăng tự động sẽ là khóa chính cho bảng này 18. Điều này tạo ra các cột updated_at và created_at TIMESTAMP. Các cột này sẽ chứa dấu thời gian khi dữ liệu được chèn và cập nhật trong cơ sở dữ liệu, tương ứngCác cột này không bắt buộc. Bạn quyết định các cột sẽ bao gồm dựa trên nhu cầu của ứng dụng của bạn Sửa đổi bảng của bạnĐể đổi tên bảng, hãy sử dụng phương pháp 19 trên mặt tiền 40. Trước khi đổi tên bảng, hãy xác nhận rằng tất cả các ràng buộc khóa ngoại trên bảng đó đều có tên rõ ràng trong tệp di chuyển của bạn thay vì cho phép Laravel gán tên dựa trên quy ước. Mặt khác, tên ràng buộc khóa ngoại sẽ tham chiếu đến bảng cũTrong đoạn mã bên dưới, chúng tôi đã đổi tên bảng 15 thành 42 2Bạn có thể sử dụng phương thức 43 trên Schema facade để xóa bảng. Xoá bảng là thao tác ngược lại của việc tạo, do đó, nó có thể nằm trong phương thức 44 của tệp di chuyển. Bằng cách này, bảng sẽ bị hủy bất cứ khi nào bạn quay lại quá trình di chuyển của mình. Bây giờ trong đoạn mã bên dưới, hãy bỏ bảng 15. Bạn có thể thận trọng hơn bằng cách sử dụng 46, vì vậy nó sẽ kiểm tra xem bảng có tồn tại hay không trước khi xóa nó và nếu nó không tồn tại, nó sẽ tiếp tục thực hiện lệnh tiếp theo mà không cần cố gắng xóaNếu bạn sử dụng 47 cho một bảng không tồn tại, nó sẽ ngắt quá trình thực thi và trả về thông báo lỗi 8Có nhiều phương pháp Schema hữu ích khác có trong. Dưới đây là một số ví dụ 48. Cái này kiểm tra xem cơ sở dữ liệu có bảng tên là 15 không 20. Điều này kiểm tra xem cơ sở dữ liệu có bảng 15 với cột có tên là 46CộtTrong cơ sở dữ liệu quan hệ, mỗi hàng của cơ sở dữ liệu có một cột tương ứng chứa một nhóm các giá trị dữ liệu cùng kiểu. Các cột của bảng xác định cấu trúc của dữ liệu, trong khi các hàng của nó điền dữ liệu vào cơ sở dữ liệu Tạo một cộtĐể cập nhật các bảng hiện có với các cột bổ sung, hãy sử dụng phương thức table() trong Schema facade. Nó chấp nhận các đối số giống như phương thức 23. Bạn có thể chọn kiểu dữ liệu của cột từ bất kỳ. Bây giờ, trong đoạn mã dưới đây, tôi sẽ thêm một cột bổ sung 24 vào bảng 15 7
Ngoài ra, Laravel cung cấp cho phép một cột có các thuộc tính bổ sung. Với điều này, bạn có thể đặt giá trị mặc định cho cột ví bằng công cụ sửa đổi 26 0Thả một cộtĐể thả các cột, bạn có thể sử dụng phương pháp 27 trên mặt tiền 40. Trong phương pháp 3 của tệp di chuyển này, bạn có thể thả cột 1Tôi đã viết một bài viết giải thích về việc thêm và xóa các cột khỏi các bảng hiện có trong quá trình di chuyển laravel Sửa đổi một cộtĐể sửa đổi/đổi tên một cột, bạn phải sử dụng trình quản lý gói Composer để cài đặt gói 80. Để cài đặt nó, hãy chạy lệnh này 2Ngoài ra, bạn cần đưa cấu hình sau vào cấu hình/cơ sở dữ liệu của ứng dụng. php để sử dụng phương pháp 81 3Giờ đây, bạn có thể sử dụng phương pháp 82 để sửa đổi loại và thuộc tính của các cột hiện có 4Bạn có thể sử dụng phương pháp 83 trên mặt tiền 40 để đổi tên các cột. Hãy đổi tên 45 thành 86 5chỉ mụcChỉ mục là công cụ mạnh mẽ được sử dụng ẩn trong cơ sở dữ liệu để tăng tốc độ truy vấn. Lập chỉ mục các truy vấn mạnh mẽ bằng cách cung cấp cho người dùng cách tìm kiếm dữ liệu họ cần một cách nhanh chóng Một chỉ mục có thể được coi là một con trỏ tới thông tin của bảng. Tốt nhất nên cẩn thận khi sử dụng chỉ mục, đặc biệt là khi bảng được cập nhật thường xuyên. Chỉ mục luôn được tạo lại với mỗi lần cập nhật, làm chậm hệ thống Một ví dụ tuyệt vời về loại chỉ mục là 87. Nó yêu cầu tất cả các giá trị trong cột đó là duy nhất. Điều này có nghĩa là các giá trị không thể được lặp lại trong cột đó. Trong ví dụ sau, bạn sẽ tạo chỉ mục cho cột 88 trong bảng 15 là duy nhất. 6Có các khóa khác, bao gồm khóa chính và khóa ngoại Khóa ngoại trong bảng cơ sở dữ liệu quan hệ là một cột hoặc tập hợp các cột kết nối dữ liệu từ hai bảng khác nhau. Nó đề cập đến khóa chính của một bảng khác, tạo liên kết giữa hai bảng và dùng làm tham chiếu chéo giữa chúng Bây giờ, hãy giới thiệu bảng 70 vào cơ sở dữ liệu của bạn trong tệp di chuyển mới. Bảng 70 phải có khóa ngoại để tham chiếu người dùng sở hữu cuốn sách. Một quy ước đặt tên tốt cho khóa ngoại trong Laravel là 72. Điều này là do Laravel cố đoán bảng và cột được tham chiếu dựa trên tên của khóa ngoại. Bạn cũng có thể đặt khóa ngoại ưa thích của mình và sử dụng các thuộc tính 73 và 74 để trỏ đến cột và bảng được tham chiếu tương ứng. Bằng cách này, Laravel bỏ qua dự đoán đã thử và sử dụng bảng và cột được tham chiếu đã được xác địnhSử dụng 75 trong ví dụ này tham chiếu cột 44 trên bảng 15. Trong phương pháp này, bạn phải xác định user_id là một 78 trước khi xác định các thuộc tính khóa ngoại của nó. 7Laravel cũng cung cấp một phương thức ngắn hơn chỉ sử dụng tên của khóa ngoại để xác định tên của bảng và cột được tham chiếu. Điều này ngắn hơn vì sẽ không cần khai báo 78 và bao gồm các thuộc tính 73 và 74 cho khóa ngoại hoặc cũng khai báo 78. Bạn cũng có thể tiếp tục và bao gồm các thuộc tính khóa ngoại khác như 03, v.v. 8Phương thức 03 là tùy chọn và cho phép bạn chỉ định tên bảng nếu các quy ước không phù hợp với tên bảng của bạnCác phương thức 05 và 06 cho phép bạn chỉ định hành động cần thực hiện khi khóa ngoại bị xóa hoặc cập nhật. Hành động xếp tầng có nghĩa là khi các hàng trong bảng cha bị xóa, các cột khóa ngoại phù hợp trong bảng con cũng bị xóa, tạo ra một thao tác xóa xếp tầng. Do đó, nếu bạn xóa một người dùng, sách của họ cũng bị xóa
9Xóa di chuyểnKhông có lệnh Artisan để loại bỏ di chuyển. Tuy nhiên, việc xóa di chuyển phụ thuộc vào việc chúng đã được thực thi trong cơ sở dữ liệu hay chưa Sử dụng 08 để kiểm tra xem quá trình di chuyển của bạn đã được thực hiện chưa nếu bạn không chắc chắnNếu bạn chưa chạy 09 để thực hiện di chuyển, bạn có thể xóa tệp di chuyểnTuy nhiên, nếu việc di chuyển đã được thực hiện, bạn nên làm theo các bước sau
Dập tắt di chuyểnKhi ứng dụng của bạn phát triển theo thời gian, nó có thể cần nhiều lần di chuyển hơn. Do đó, bạn có thể đã nhận được nhiều tệp di chuyển trong thư mục cơ sở dữ liệu/di chuyển của mình. Bạn có thể nén các tệp di chuyển của mình thành một tệp SQL duy nhất bằng cách sử dụng lệnh 13 0Khi bạn chạy lệnh này, Laravel sẽ tạo một tệp "lược đồ" trong thư mục cơ sở dữ liệu/lược đồ của ứng dụng của bạn. Sau đó, nếu bạn cố gắng di chuyển cơ sở dữ liệu của mình lần đầu tiên trong ứng dụng của mình, Laravel sẽ chạy các câu lệnh SQL trong tệp lược đồ trước. Sau đó, nó sẽ chạy các lần di chuyển còn lại không có trong kết xuất lược đồ sau khi chạy các dòng trong tệp lược đồ sự kiện di chuyểnLaravel cung cấp một số sự kiện di chuyển công văn cho phép bạn thực hiện các hành động tiếp theo sau khi thao tác di chuyển đã được thực thi. Ví dụ: bạn có thể gửi email cho quản trị viên mỗi khi quá trình di chuyển hoàn tất.
Những sự kiện này mở rộng lớp 18 theo mặc định. Bây giờ, bạn có thể đăng ký tương ứng với bất kỳ sự kiện nào trong số này trong thư mục app\Providers\EventServiceProvider 1Bạn có thể đọc chính thức để hiểu các sự kiện tốt hơn Các lệnh di chuyển khácLaravel có một số lệnh Artisan khác giúp cho việc di chuyển trở nên dễ sử dụng, bao gồm các lệnh sau Quay trở lại di chuyểnBạn có thể muốn hoàn nguyên đợt di chuyển cuối cùng về cơ sở dữ liệu của mình. Thay vì xóa các cột và bảng khỏi trình quản lý cơ sở dữ liệu, bạn có thể chạy lệnh Artisan này 2Bạn cũng có thể khôi phục một số đợt di chuyển bằng cách sử dụng tùy chọn 19 và số lô. Laravel theo dõi tất cả 20 trên bảng di chuyển, bao gồm cả số đợt di chuyển 3Nó khôi phục hai đợt di chuyển cuối cùng vào cơ sở dữ liệu của bạn. Bạn có thể kiểm tra bảng di chuyển trong cơ sở dữ liệu của mình nếu bạn không chắc chắn về số lô di chuyển để khôi phục Đặt lại di chuyểnBạn có thể sử dụng lệnh 21 để khôi phục tất cả các lần di chuyển ứng dụng của mình trong cơ sở dữ liệu 4Làm mới di chuyểnBạn có thể sử dụng lệnh 22 để tạo lại toàn bộ cơ sở dữ liệu của mình. Nó khôi phục tất cả các lần di chuyển của bạn và thực hiện lại lệnh di chuyển 5Lệnh đó thường bị nhầm với 23. Lệnh 23 loại bỏ tất cả các bảng trong cơ sở dữ liệu trước khi thực hiện lệnh di chuyển. 6
Tạo một mô hình với di chuyểnKhi tạo một mô hình, bạn có thể sử dụng tùy chọn —migration (hoặc -m) để tạo một sự di chuyển cơ sở dữ liệu tương ứng 7Sử dụng lệnh này, Laravel tạo một Thể loại. php tệp mô hình trong thư mục ứng dụng/Mô hình và tệp di chuyển 26 trong cơ sở dữ liệu/di chuyểnBớt tư tưởngBạn đã đi một chặng đường dài, xin chúc mừng Trong bài viết này, bạn đã học cách sử dụng di chuyển để cải thiện các ứng dụng Laravel của mình. Mã nguồn cho các tệp di chuyển, bao gồm các ví dụ được đánh dấu, có sẵn trên GitHub. Bạn cũng có thể tìm thêm thông tin về việc di chuyển Laravel trong tài liệu chính thức. Bây giờ bạn có thể thấy rằng việc di chuyển là cần thiết để theo dõi các thay đổi của cơ sở dữ liệu, hỗ trợ phát hiện lỗi và khôi phục trong trường hợp xảy ra lỗi Nếu bạn muốn thấy sức mạnh của Laravel kết hợp với ButterCMS, hãy xem hướng dẫn của chúng tôi. Cách xây dựng blog với Laravel (và gửi thông báo chậm) Làm cách nào để di chuyển trong Laravel mà không mất dữ liệu?Đặt chi tiết cột của bạn ở đó, chạy di chuyển bằng cách sử dụng di chuyển thủ công php và đó là tất cả. Bạn sẽ có cột mới này trong bảng người dùng của mình mà không làm mất dữ liệu đã lưu trữ trước đó
Rollback di chuyển nghệ nhân php là gì?Theo mặc định, php artisan sẽ di chuyển. rollback sẽ rollback tất cả các lần di chuyển cơ sở dữ liệu của bạn . Bằng cách chỉ định --step=1 , bạn đang nói rằng bạn chỉ muốn khôi phục quá trình di chuyển cơ sở dữ liệu mới nhất. Ngoài ra, nếu bạn thay đổi số, e. g. vào --step=2 , bạn đang yêu cầu Laravel chỉ khôi phục hai lần di chuyển cuối cùng.
Lợi thế của việc di chuyển Laravel là gì?Ưu điểm và nhược điểm của việc di chuyển Laravel
. Nó rất dễ học. Các tài liệu có sẵn một cách dễ dàng. Đáp ứng hầu hết mọi tiêu chí theo yêu cầu của việc xây dựng ứng dụng web hiện đại. Web applications can be built on it quickly. It is easy to learn. The documentation is easily available. Fulfils almost every criterion demanded by modern web application build up.
Làm cách nào để xóa tệp di chuyển trong Laravel?Trong Laravel hình như có lệnh tạo migration nhưng không xóa. . Xóa thủ công tệp di chuyển trong ứng dụng/cơ sở dữ liệu/di chuyển/my_migration_file_name. php Đặt lại tệp tự động tải của nhà soạn nhạc. nhà soạn nhạc dump-autoload Sửa đổi cơ sở dữ liệu của bạn. Xóa mục nhập cuối cùng khỏi bảng di chuyển |