2013-04-20 42 views
5

Tôi có một di chuyển được gọi là CreateItemsTable; Tôi chạy nó, tôi có các mục trong bảng đó, bây giờ tôi cần thêm một trường mới vào bảng. Tôi không thể thêm trường vào tệp di chuyển và migrate:refresh vì tôi cần dữ liệu trong đó.Trường dữ liệu di chuyển Laravel thêm trường sau khi dữ liệu có trong bảng?

Tôi có phải thực hiện một lần di chuyển khác để thêm trường không? Điều đó có vẻ như lộn xộn trong khi tôi đang thử nghiệm mọi thứ trong phát triển, tôi có thể thay đổi các lĩnh vực rất nhiều. Tôi không chắc chắn nếu di chuyển được sạch hơn so với PhpMyAdmin ... hoặc có lẽ tôi không hiểu họ?

Trả lời

8

Có, mỗi khi bạn cần thay đổi bảng theo cách nào đó, bạn sẽ tạo một di chuyển mới cho nó. Đó là toàn bộ điểm di cư. Khi bạn đang phát triển trong môi trường cộng tác và bạn kéo xuống một số thay đổi từ kho lưu trữ từ xa, một trong những điều bạn nên làm (nếu làm việc với cơ sở dữ liệu) là chạy bất kỳ di chuyển nào mà các nhà phát triển khác có thể đã tạo. Điều này giúp cơ sở dữ liệu của bạn được đồng bộ hóa.

Chắc chắn bạn thỉnh thoảng có thể thả và thêm cột nhưng không có vấn đề gì lớn.

Khi bạn tạo bảng lần đầu tiên có thể bạn đang sử dụng Schema::create(). Tất cả các lần di chuyển tiếp theo cho bảng đó sẽ sử dụng Scheme::table(). Nó chấp nhận các tham số tương tự ngoại trừ nó không cố gắng tạo bảng đầu tiên.

+0

Ahh, tôi hiểu, vì vậy repo git của bạn sẽ có tất cả lược đồ cơ sở dữ liệu trong quá trình di chuyển, rất tuyệt! –

+3

Chính xác. Và kịch bản di trú biết rằng việc di trú là mới nên nó sẽ không thực thi lại những ứng dụng đã được áp dụng cho cơ sở dữ liệu. –

+1

Chúng tôi có thể khôi phục hoặc làm mới một lần di chuyển không? Giả sử trong DB sản xuất, chúng tôi có dữ liệu người dùng và chúng tôi thực hiện di chuyển: khôi phục hoặc di chuyển: làm mới thì chúng tôi sẽ mất tất cả dữ liệu. – Sameer

Các vấn đề liên quan