Một lựa chọn khác cho những người được đề cập nếu bạn cần thực hiện việc này rất nhiều lần với cùng một lần di chuyển. Cá nhân tôi nghĩ rằng điều này thêm rất nhiều tính linh hoạt cho việc di chuyển của bạn.
Thêm vào database/migrations
đối tượng tự động tải của bạn trong composer.json
như thế này:
"autoload": {
"psr-4": {
"App\\": "app/"
},
"classmap": [
"database/seeds",
"database/factories",
"database/support",
"database/migrations" // add this line
]
},
Sau đó thêm namespace Database\Migrations;
vào tất cả các tệp di chuyển của bạn.
Sau đó chạy $ composer dump-autoload
để làm mới composer.lock
tập tin của bạn .
Sau đó, giả sử tên lớp của bạn cho việc di chuyển là AlterTableWebDirectories
, bạn có thể tạo một lệnh như thế này:
$ php artisan make:command DropAlterTableWebDirectories
Và viết logic này trong handle()
phương thức của bạn :
public function handle {
(new AlterTableWebDirectories)->down();
DB::raw("delete from migrations where migration like '%alter_table_web_directories%'");
}
Điều này sẽ làm chính xác những gì bạn muốn. Nếu bạn muốn giảm số lượng di chuyển thay vì xóa nó, có lẽ bạn có thể tìm ra cách thay đổiDB:raw
lệnh.
Lệnh này có thể được mở rộng để cho phép bạn tự động chọn di chuyển mà bạn thả nó bằng cách chuyển một đối số vào lệnh.
Sau đó, khi bạn đọc để di chuyển tệp đó một lần nữa, bạn có thể chạy php artisan migrate
và nó sẽ chỉ di chuyển tệp đó.
Quá trình này cho phép bạn thực hiện các thay đổi cụ thể đối với việc di chuyển mà không phải thực hiện làm mới hoàn toàn và gieo hạt mỗi lần.
Cá nhân tôi cần phải làm điều đó rất nhiều vì hạt giống của tôi khá lớn.