Php nghệ nhân di chuyển hạt giống
Để tạo seeder, bạn có thể sử dụng lệnh Artisan Show
Seeders được tạo sẽ chứa một phương thức.
Nhìn chung, bạn sẽ muốn gọi tất cả các seeder bên trong lớp Khi bạn viết xong các seeder, hãy sử dụng lệnh 0. Điều này sẽ chạy chức năng run của DatabaseSeeder Cơ chế di chuyển của Laravel có chức năng gieo dữ liệu tuyệt vời. Trong bài viết này, tôi sẽ chỉ ra các mẹo ngẫu nhiên từ kinh nghiệm của bản thân, cách sử dụng seeding trong các trường hợp thực tế Mẹo 1. Sử dụng updateOrCreate() để tránh double-seedingHãy tưởng tượng mã trình tạo này và tưởng tượng nếu vì lý do nào đó, trình tạo này sẽ được khởi chạy nhiều lần
Lần thử thứ hai để chạy seeder có thể sẽ thất bại do ID xung đột. Trong trường hợp khác, nếu bạn không chỉ định ID, thì bạn có thể có quá nhiều dữ liệu trong bảng, với các mục lặp lại. Để tránh điều đó, hãy làm điều này
Một số chi tiết khác trong bài viết khác của tôi Mẹo 2. Chỉ chạy một lớp SeederCách đây một thời gian, tôi khá ngạc nhiên khi có nhiều người không biết rằng bạn có thể chỉ định lớp seeder khi chạy php artisan db. hạt giống
Lệnh trên sẽ khởi chạy mọi thứ được liệt kê trong DatabaseSeeder. tập tin php Nhưng bạn có thể giới hạn việc khởi chạy cho một máy gieo hạt chính xác
Mẹo 3. Chạy lớp Seeder từ MigrationKhá thường xuyên, bạn cần tạo một bảng DB mới và ngay lập tức tạo một số dữ liệu cho nó. Nhưng trong môi trường sản xuất, bạn không thể chạy "artisan db. seed", đặc biệt nếu bạn có thiết lập triển khai tự động chỉ liên quan đến lệnh "artisan migration" Mẹo nhỏ là khởi chạy một seeder cụ thể từ chính tệp di chuyển
Mẹo 4. Nhà máy gieo hạt có mối quan hệ. Sử dụng Nhà máy của Cha mẹNếu bạn sử dụng Nhà máy cho hạt giống của mình, làm thế nào để bạn thiết lập mối quan hệ giữa hai mô hình? Đây là cách cơ sở dữ liệu/nhà máy/CompanyFactory. php có thể trông giống như Xem cách điền vào trường company_id? Ngoài ra còn có một cách khác, có lẽ ít phổ biến hơn - đọc về nó trong một bài báo khác của tôi Mẹo 5. DatabaseSeeder cho địa phương và sản xuấtĐôi khi bạn chỉ cần tạo một số dữ liệu trong môi trường cục bộ của mình chứ không phải trong sản xuất. Hoặc, sử dụng các tệp seeder khác nhau cho các môi trường khác nhau Không chắc đó có phải là cách thanh lịch nhất hay không, nhưng đây là cách trước đây tôi đã đạt được các cách gieo hạt khác nhau cho môi trường sản xuất và địa phương
Mẹo 6. Sử dụng iSeed để tạo Seeder từ cơ sở dữ liệuMẹo cuối cùng thực sự là một công cụ mà tôi đã sử dụng khá nhiều lần, nó được gọi là iSeed Generator Đây là video của tôi về nó Đó là nó. Mẹo "chung" cuối cùng là tạo các seeder của bạn theo cách mà trên môi trường cục bộ/dàn dựng của bạn, bạn có thể chạy "artisan migration. tươi --seed" nhiều lần một cách an toàn mà không làm mất bất kỳ dữ liệu quan trọng nào, nhưng trên môi trường sản xuất, bạn cần chạy "artisan db. seed" chỉ một lần và sau đó quên đi seeder. Nếu bạn cần chạy một số hạt giống trong quá trình sản xuất, hãy đưa nó vào quá trình di chuyển, xem Mẹo 3 php artisan db là gì. hạt giống?Db. lệnh seed được dùng để tự động thêm bản ghi vào cơ sở dữ liệu bằng cách sử dụng lớp Seeder ( Illuminate\Database\Seeder ) để tạo hoặc cung cấp bản ghi . db. hạt giống xác định ba tùy chọn. lớp, cơ sở dữ liệu và lực lượng. Tùy chọn lớp có thể được sử dụng để chỉ định rằng nên sử dụng một lớp Seeder cụ thể.
php artisan có xóa dữ liệu không?Làm mới di chuyển sẽ xóa tất cả các bảng, sau đó cài đặt lại tất cả các lần di chuyển . Vì vậy, mọi dữ liệu sẽ bị mất. Nếu bạn muốn thêm các lần di chuyển khác vào cơ sở dữ liệu hiện tại của mình - bạn chỉ nên chạy php artisan migration - sẽ chỉ chạy các lần di chuyển chưa xảy ra.
Làm cách nào để cập nhật seeder trong Laravel?Sử dụng updateOrCreate() để chạy Seed bất cứ lúc nào . Tạo một tệp di chuyển cho điều đó với Vai trò. tìm(1)->cập nhật(); Tạo một tệp hạt giống cụ thể và chạy php artisan db. hạt giống --class=NewRoleSeeder Sửa đổi seeder hiện có và chạy lại php artisan db. hạt giống cho toàn bộ ứng dụng Laravel seeder hoạt động như thế nào?Laravel bao gồm khả năng khởi tạo cơ sở dữ liệu của bạn bằng dữ liệu bằng cách sử dụng các lớp khởi tạo . Tất cả các lớp hạt giống được lưu trữ trong thư mục cơ sở dữ liệu/người gieo hạt. Theo mặc định, một lớp DatabaseSeeder được xác định cho bạn. Từ lớp này, bạn có thể sử dụng phương thức gọi để chạy các lớp hạt giống khác, cho phép bạn kiểm soát thứ tự hạt giống. |