Làm thế nào tôi có thể di chuyển tươi?

Nếu bạn sử dụng Laravel, bạn sẽ quen với việc di chuyển. Di chuyển là các lệnh mà bạn chạy trong Laravel để thay đổi cơ sở dữ liệu của mình để bạn không phải sử dụng cơ sở dữ liệu theo cách thủ công và các lệnh này có thể được chia sẻ với nhóm của bạn. Có các biến thể đối với lệnh di chuyển, bao gồm migrate:freshmigrate:refresh tương tự nhau. Vì vậy, sự khác biệt là gì?

migrate:fresh xóa tất cả các bảng trong cơ sở dữ liệu của bạn và chạy lại tất cả các lần di chuyển trong khi migrate:refresh khôi phục từng đợt di chuyển của bạn rồi chạy lại tất cả các lần di chuyển. Sự khác biệt chỉ đơn giản là migrate:fresh làm trống cơ sở dữ liệu của bạn ngay lập tức trong khi migrate:refresh làm từng bước một

Như bạn có thể thấy trong hình ảnh trên cùng, migrate:fresh đã xóa tất cả các bảng nhưng migrate:refresh tuyên bố rằng nó đã khôi phục tất cả các lần di chuyển

Mặc dù các phương pháp khác nhau, nhưng chúng có cùng một mục đích. Cả hai đều được sử dụng khi bạn muốn chạy lại tất cả các lần di chuyển của mình. Ví dụ: bạn muốn xóa tất cả dữ liệu của mình khi phát triển, thì bạn có thể sử dụng một trong hai lệnh đó

Lệnh migrate:fresh sẽ loại bỏ tất cả các bảng khỏi cơ sở dữ liệu và sau đó thực thi lệnh migrate 

Tài liệu Laravel

Lệnh migrate:refresh sẽ khôi phục tất cả các lần di chuyển của bạn và sau đó thực thi lệnh migrate . Lệnh này tạo lại toàn bộ cơ sở dữ liệu của bạn một cách hiệu quả

Tài liệu Laravel

quay lui là gì?

lệnh rollback khôi phục đợt di chuyển cuối cùng, có thể bao gồm nhiều tệp di chuyển. Quay lại đây có nghĩa là hoàn tác quá trình di chuyển của bạn. Cách rollback hoạt động là chạy chức năng down trong quá trình di chuyển của bạn khi bạn chạy lệnh migrate:refresh2. Quá trình di chuyển được thực hiện theo đợt, nghĩa là nếu trong một đợt bạn chạy 2 lần di chuyển, thì 2 lần di chuyển đó sẽ được khôi phục

Hy vọng bạn hiểu rollback nghĩa là gì nếu trước đây bạn không hiểu

Chúng có thường được sử dụng không?

Chúng chủ yếu được sử dụng để phát triển trên máy chủ cục bộ của bạn. Chà, ngay cả rollback cũng không được khuyến nghị sử dụng khi phát triển. Rõ ràng là bạn không muốn mất dữ liệu quý giá về sản xuất. Bạn có thể mất dữ liệu khó kiếm được nếu chạy các lệnh đó

Nhưng, trong quá trình phát triển, có thể chấp nhận được. Có thể có trường hợp bạn muốn bắt đầu lại hoặc bạn đã thực hiện các lần di chuyển sai. Vì vậy, câu trả lời là có trong quá trình phát triển và không trong quá trình sản xuất

Cái nào hiệu quả hơn?

Thực tế là hầu hết các nhà phát triển không thực sự kiểm tra chức năng down của họ trong quá trình di chuyển của họ. Họ chỉ viết nó trong trường hợp cần thiết. Nếu chức năng xuống bị sai, quá trình khôi phục sẽ bị xáo trộn. Vì vậy, xem xét rằng migrate:refresh phụ thuộc vào hàm down, có thể có lỗi. Vì vậy, tốt hơn là sử dụng migrate:fresh không phụ thuộc vào các hàm down và chỉ cần làm trống cơ sở dữ liệu của bạn để điền lại

Tuyên bố đóng cửa

Vì vậy, có bạn đi, đó là sự khác biệt. Hi vọng bạn đã có câu trả lời thỏa mãn

Bây giờ bạn đã hiểu thêm về Laravel, nếu bạn đang tìm nơi lưu trữ Ứng dụng Laravel của mình, tôi khuyên dùng Cloudways. Nó tương thích, nhanh, đáng tin cậy và có tùy chọn cụ thể cho Laravel. Ngoài ra còn có rất nhiều tài nguyên về Laravel hosting trên Cloudways. Đi trước và kiểm tra xem nó ra

Nếu bạn đang muốn làm mới kỹ năng PHP của mình, bạn có thể thử khóa học PHP miễn phí của Codecademy. Hãy tiếp tục và kiểm tra giáo trình để xem nó có phù hợp với bạn không. Nếu bạn quan tâm, hãy đi và dùng thử miễn phí

Vui lòng kiểm tra phần còn lại của blog của tôi nếu bạn quan tâm đến các chủ đề phát triển web, đặc biệt là Laravel và JavaScript

Chuyển đến phần di chuyển của bạn và đối với các bảng bạn không muốn bỏ, trong phương thức up[], hãy thêm kiểm tra có điều kiện để bỏ qua quá trình di chuyển nếu bảng vẫn tồn tại. Bạn cần làm điều này để sau này php artisan migrate không báo lỗi về bảng hoặc cột đã tồn tại

Laravel có một lệnh migrate:refresh để xây dựng cơ sở dữ liệu bằng cách di chuyển. Để xóa cơ sở dữ liệu, trước tiên, nó sẽ khôi phục tất cả các lần di chuyển bằng cách sử dụng phương pháp down trong mỗi lần di chuyển

Nhưng nếu bạn không sử dụng phương pháp down trong các dự án của mình thì sao?

Gói này chứa một lệnh

// app/Console/Kernel.php

protected $commands = [
   ...
    \Spatie\MigrateFresh\Commands\MigrateFresh::class,
]
0 sẽ xóa tất cả các bảng trong cơ sở dữ liệu của bạn bất kể bạn đã thiết lập phương thức down trong mỗi lần di chuyển hay chưa

Bưu thiếp

Bạn có thể tự do sử dụng gói này [được MIT cấp phép], nhưng nếu nó được đưa vào môi trường sản xuất của bạn, chúng tôi đánh giá cao việc bạn gửi cho chúng tôi một tấm bưu thiếp từ quê hương của bạn, đề cập đến [những] gói mà bạn đang sử dụng.

Địa chỉ của chúng tôi là. Spatie, Samberstraat 69D, 2060 Antwerp, Bỉ

Những tấm bưu thiếp tốt nhất được xuất bản trên trang web của chúng tôi

Yêu cầu

Lệnh này hỗ trợ cơ sở dữ liệu MySQL, sqlite, PostgreSQL và MS SQL

Ghi chú. lệnh

// app/Console/Kernel.php

protected $commands = [
   ...
    \Spatie\MigrateFresh\Commands\MigrateFresh::class,
]
0 được bao gồm theo mặc định trong Laravel 5. 5

Cài đặt

Bạn có thể cài đặt gói qua nhà soạn nhạc

composer require spatie/laravel-migrate-fresh

Tiếp theo, thêm lớp

// app/Console/Kernel.php

protected $commands = [
   ...
    \Spatie\MigrateFresh\Commands\MigrateFresh::class,
]
3 vào nhân bảng điều khiển của bạn

// app/Console/Kernel.php

protected $commands = [
   ...
    \Spatie\MigrateFresh\Commands\MigrateFresh::class,
]

Cách sử dụng

Lệnh này sẽ loại bỏ tất cả các bảng khỏi cơ sở dữ liệu của bạn và chạy tất cả các lần di chuyển

php artisan migrate:fresh

Xin lưu ý rằng lệnh sẽ đánh sập tất cả các bảng trong cơ sở dữ liệu. Các bảng không thuộc ứng dụng của bạn cũng sẽ bị loại bỏ

Bằng cách gắn thẻ trên tùy chọn

// app/Console/Kernel.php

protected $commands = [
   ...
    \Spatie\MigrateFresh\Commands\MigrateFresh::class,
]
4, tất cả các seeder cũng sẽ chạy

php artisan migrate:fresh --seed

Nếu lệnh đang được thực thi trong môi trường sản xuất, trước tiên sẽ yêu cầu xác nhận. Để chặn xác nhận, hãy sử dụng tùy chọn

// app/Console/Kernel.php

protected $commands = [
   ...
    \Spatie\MigrateFresh\Commands\MigrateFresh::class,
]
5

php artisan migrate:fresh --force

Sự kiện

Gói này kích hoạt một số sự kiện mà bạn có thể nối vào để thực hiện một số logic bổ sung xây dựng lại cơ sở dữ liệu

  • // app/Console/Kernel.php
    
    protected $commands = [
       ...
        \Spatie\MigrateFresh\Commands\MigrateFresh::class,
    ]
    6. sẽ bị sa thải ngay trước khi rơi bàn đầu tiên
  • // app/Console/Kernel.php
    
    protected $commands = [
       ...
        \Spatie\MigrateFresh\Commands\MigrateFresh::class,
    ]
    7. sẽ được kích hoạt ngay sau khi tất cả các bảng đã bị loại bỏ và trước khi chạy
    // app/Console/Kernel.php
    
    protected $commands = [
       ...
        \Spatie\MigrateFresh\Commands\MigrateFresh::class,
    ]
    8 bước di chuyển

Nhật ký thay đổi

Vui lòng xem CHANGELOG để biết thêm thông tin về những thay đổi gần đây

thử nghiệm

Để chạy thử nghiệm, bạn nên thiết lập một cơ sở dữ liệu mysql trống

// app/Console/Kernel.php

protected $commands = [
   ...
    \Spatie\MigrateFresh\Commands\MigrateFresh::class,
]
9. Tên người dùng phải là
php artisan migrate:fresh
0, mật khẩu bắt buộc phải trống

$ composer test

Đóng góp

Vui lòng xem ĐÓNG GÓP để biết chi tiết

Bảo vệ

Nếu bạn phát hiện ra bất kỳ vấn đề nào liên quan đến bảo mật, vui lòng gửi email tới freek@spatie. thay vì sử dụng trình theo dõi vấn đề

Tín dụng

  • Freek Van der Herten
  • Tất cả những người đóng góp

Mã ban đầu để xóa tất cả các bảng trong db Postgresql được cung cấp bởi Jonathan Reinink và được xem xét bởi Peter Matseykanets. Peter cũng đã thêm hỗ trợ cho Sqlite

Giới thiệu về Spatie

Spatie là một công ty thiết kế web có trụ sở tại Antwerp, Bỉ. Bạn sẽ tìm thấy tổng quan về tất cả các dự án nguồn mở của chúng tôi trên trang web của chúng tôi

Làm thế nào chúng ta có thể di cư mới?

Việc di chuyển. lệnh mới được sử dụng để loại bỏ tất cả các bảng khỏi cơ sở dữ liệu, sau đó chạy lại tất cả các lần di chuyển . Đầu ra ở trên cho thấy lệnh mới loại bỏ tất cả các bảng và sau đó di chuyển lại nó. sự di cư. lệnh cài đặt tạo bảng di chuyển trong cơ sở dữ liệu.

Sự khác biệt giữa di chuyển mới và làm mới trong Laravel là gì?

nghệ nhân php di chuyển. tươi được sử dụng khi chúng tôi muốn cài đặt cơ sở dữ liệu mới hoặc mới. Nó xóa tất cả các bảng hiện có của cơ sở dữ liệu và chạy lệnh di chuyển. nghệ nhân php di chuyển. làm mới là một lệnh hai trong một thực thi. lệnh rollback và lệnh di chuyển

Trạng thái di chuyển là gì?

Việc di chuyển. lệnh status có thể được dùng để kiểm tra trạng thái của mỗi lần di chuyển . Lệnh sẽ xuất ra một bảng liệt kê từng lần di chuyển và chỉ báo về việc quá trình di chuyển đã được chạy hay chưa.

Làm cách nào để chạy di chuyển trong Laravel?

Để chạy quá trình di chuyển cụ thể trong Laravel, bạn cần phải sử dụng tùy chọn --path với lệnh di chuyển nghệ nhân php . Hãy lấy một ví dụ đơn giản, chúng tôi có '2019_12_04_131405_create_payments_table. php' trong thư mục cơ sở dữ liệu/di chuyển và chúng tôi muốn chạy quá trình di chuyển này.

Chủ Đề