Trình tạo di chuyển cho Laravel là một gói của Bennett Treptow để tạo di chuyển từ các cấu trúc cơ sở dữ liệu hiện có
Trường hợp sử dụng chính cho gói này sẽ là một dự án có nhiều lần di chuyển làm thay đổi các bảng bằng cách sử dụng ->change[] từ học thuyết/dbal mà SQLite không hỗ trợ và cần một cách để cập nhật cấu trúc bảng cho SQLite để sử dụng trong các thử nghiệm. Một trường hợp sử dụng khác là lấy một dự án có cơ sở dữ liệu và không có di chuyển và biến cơ sở dữ liệu đó thành di chuyển cơ sở
Gói này có thể hữu ích nếu bạn đang chuyển một ứng dụng hiện có sang Laravel và muốn tạo lại quá trình di chuyển cơ sở dữ liệu cho ứng dụng để trợ giúp phát triển và thử nghiệm
Liên quan Tạo Password Generator với Laravel
Để hình dung quá trình này hoạt động như thế nào, readme đã xác định bảng users
sau
CREATE TABLE `users` [
`id` int[10] unsigned NOT NULL AUTO_INCREMENT,
`username` varchar[128] COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`email` varchar[255] COLLATE utf8mb4_unicode_ci NOT NULL,
`password` varchar[255] COLLATE utf8mb4_unicode_ci NOT NULL,
`first_name` varchar[45] COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`last_name` varchar[45] COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`timezone` varchar[45] COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'America/New_York',
`location_id` int[10] unsigned NOT NULL,
`deleted_at` timestamp NULL DEFAULT NULL,
`remember_token` varchar[255] COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
PRIMARY KEY [`id`],
KEY `users_username_index` [`username`],
KEY `users_first_name_index` [`first_name`],
KEY `users_last_name_index` [`last_name`],
KEY `users_email_index` [`email`],
KEY `fk_users_location_id_index` [`location_id`]
CONSTRAINT `users_location_id_foreign` FOREIGN KEY [`location_id`] REFERENCES `locations` [`id`] ON UPDATE CASCADE ON DELETE CASCADE
] ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
Sử dụng gói này, bạn có thể chạy lệnh sau để tạo lớp bản thiết kế dựa trên định nghĩa bảng
php artisan generate:migrations
Và kế hoạch chi tiết dẫn xuất từ bảng users
sẽ trông như sau theo ví dụ
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up[]
{
Schema::create['users', function [Blueprint $table] {
$table->increments['id'];
$table->string['username', 128]->nullable[]->index[];
$table->string['email', 255]->index[];
$table->string['password', 255];
$table->string['first_name', 45]->nullable[]->index[];
$table->string['last_name', 45]->index[];
$table->string['timezone', 45]->default['America/New_York'];
$table->unsignedInteger['location_id'];
$table->softDeletes[];
$table->string['remember_token', 255]->nullable[];
$table->timestamps[];
$table->foreign['location_id', 'users_location_id_foreign']->references['id']->on['locations']->onUpdate['cascade']->onDelete['cascade'];
}];
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down[]
{
Schema::dropIfExists['users'];
}
}
Gói này cũng đi kèm với các sơ đồ di chuyển bảng và xem khác nhau và cài đặt cấu hình. Ví dụ: một cấu hình xác định các mẫu tên tệp được sử dụng để tạo lược đồ bảng
return [
'table_naming_scheme' => '[Timestamp]_create_[TableName]_table.php',
// ...
];
Tại thời điểm viết gói hỗ trợ MySQL, nhưng cũng có thể hỗ trợ Postgres, SQLite và SQL Server theo readme
Bạn có thể tìm hiểu thêm về gói này, nhận hướng dẫn cài đặt đầy đủ và xem mã nguồn trên GitHub
Gói này đã được gửi đến phần Liên kết Tin tức Laravel của chúng tôi. Liên kết là nơi cộng đồng có thể đăng các gói và hướng dẫn xung quanh hệ sinh thái Laravel. Theo dõi trên Twitter @LaravelLinks