Hướng dẫn what is php artisan db seed? - hạt giống db nghệ nhân php là gì?

Phiên bản

Hướng dẫn what is php artisan db seed? - hạt giống db nghệ nhân php là gì?

Cơ sở dữ liệu: gieo hạt

  • Giới thiệu
  • Viết gieo hạt
    • Sử dụng các nhà máy mô hình
    • Gọi thêm những người gieo hạt
    • Tắt các sự kiện mô hình
  • Chạy gieo hạt giống

Giới thiệu

Laravel bao gồm khả năng gieo hạt cơ sở dữ liệu của bạn với dữ liệu bằng các lớp hạt giống. Tất cả các lớp hạt giống được lưu trữ trong thư mục database/seeders. 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 pháp

namespace Database\Seeders;

use Illuminate\Database\Seeder;

use Illuminate\Support\Facades\DB;

use Illuminate\Support\Facades\Hash;

use Illuminate\Support\Str;

class DatabaseSeeder extends Seeder

{

/**

* Run the database seeders.

*

* @return void

*/

public function run()

{

DB::table('users')->insert([

'name' => Str::random(10),

'email' => Str::random(10).'@gmail.com',

'password' => Hash::make('password'),

]);

}

}

0 để chạy các lớp hạt giống khác, cho phép bạn kiểm soát thứ tự gieo hạt.

Lưu ý Bảo vệ gán hàng loạt được tự động vô hiệu hóa trong quá trình gieo hạt dữ liệu.
Mass assignment protection is automatically disabled during database seeding.

Viết gieo hạt

Để tạo ra một người gieo hạt, thực hiện Bộ chỉ huy nghệ nhân

namespace Database\Seeders;

use Illuminate\Database\Seeder;

use Illuminate\Support\Facades\DB;

use Illuminate\Support\Facades\Hash;

use Illuminate\Support\Str;

class DatabaseSeeder extends Seeder

{

/**

* Run the database seeders.

*

* @return void

*/

public function run()

{

DB::table('users')->insert([

'name' => Str::random(10),

'email' => Str::random(10).'@gmail.com',

'password' => Hash::make('password'),

]);

}

}

1. Tất cả các máy gieo hạt được tạo ra bởi khung sẽ được đặt trong thư mục database/seeders:

php artisan make:seeder UserSeeder

Một lớp Seeder chỉ chứa một phương thức theo mặc định:

namespace Database\Seeders;

use Illuminate\Database\Seeder;

use Illuminate\Support\Facades\DB;

use Illuminate\Support\Facades\Hash;

use Illuminate\Support\Str;

class DatabaseSeeder extends Seeder

{

/**

* Run the database seeders.

*

* @return void

*/

public function run()

{

DB::table('users')->insert([

'name' => Str::random(10),

'email' => Str::random(10).'@gmail.com',

'password' => Hash::make('password'),

]);

}

}

3. Phương pháp này được gọi là khi lệnh

namespace Database\Seeders;

use Illuminate\Database\Seeder;

use Illuminate\Support\Facades\DB;

use Illuminate\Support\Facades\Hash;

use Illuminate\Support\Str;

class DatabaseSeeder extends Seeder

{

/**

* Run the database seeders.

*

* @return void

*/

public function run()

{

DB::table('users')->insert([

'name' => Str::random(10),

'email' => Str::random(10).'@gmail.com',

'password' => Hash::make('password'),

]);

}

}

4 được thực thi. Trong phương thức

namespace Database\Seeders;

use Illuminate\Database\Seeder;

use Illuminate\Support\Facades\DB;

use Illuminate\Support\Facades\Hash;

use Illuminate\Support\Str;

class DatabaseSeeder extends Seeder

{

/**

* Run the database seeders.

*

* @return void

*/

public function run()

{

DB::table('users')->insert([

'name' => Str::random(10),

'email' => Str::random(10).'@gmail.com',

'password' => Hash::make('password'),

]);

}

}

3, bạn có thể chèn dữ liệu vào cơ sở dữ liệu của mình theo cách bạn muốn. Bạn có thể sử dụng Truy vấn Trình tạo để chèn dữ liệu theo cách thủ công hoặc bạn có thể sử dụng các nhà máy mô hình hùng hồn.

Ví dụ, hãy sửa đổi lớp DatabaseSeeder mặc định và thêm câu lệnh chèn cơ sở dữ liệu vào phương thức

namespace Database\Seeders;

use Illuminate\Database\Seeder;

use Illuminate\Support\Facades\DB;

use Illuminate\Support\Facades\Hash;

use Illuminate\Support\Str;

class DatabaseSeeder extends Seeder

{

/**

* Run the database seeders.

*

* @return void

*/

public function run()

{

DB::table('users')->insert([

'name' => Str::random(10),

'email' => Str::random(10).'@gmail.com',

'password' => Hash::make('password'),

]);

}

}

3:

namespace Database\Seeders;

use Illuminate\Database\Seeder;

use Illuminate\Support\Facades\DB;

use Illuminate\Support\Facades\Hash;

use Illuminate\Support\Str;

class DatabaseSeeder extends Seeder

{

/**

* Run the database seeders.

*

* @return void

*/

public function run()

{

DB::table('users')->insert([

'name' => Str::random(10),

'email' => Str::random(10).'@gmail.com',

'password' => Hash::make('password'),

]);

}

}

Lưu ý Bạn có thể nhập bất kỳ phụ thuộc nào bạn cần trong chữ ký của phương thức

namespace Database\Seeders;

use Illuminate\Database\Seeder;

use Illuminate\Support\Facades\DB;

use Illuminate\Support\Facades\Hash;

use Illuminate\Support\Str;

class DatabaseSeeder extends Seeder

{

/**

* Run the database seeders.

*

* @return void

*/

public function run()

{

DB::table('users')->insert([

'name' => Str::random(10),

'email' => Str::random(10).'@gmail.com',

'password' => Hash::make('password'),

]);

}

}

3. Chúng sẽ tự động được giải quyết thông qua container dịch vụ Laravel.
You may type-hint any dependencies you need within the

namespace Database\Seeders;

use Illuminate\Database\Seeder;

use Illuminate\Support\Facades\DB;

use Illuminate\Support\Facades\Hash;

use Illuminate\Support\Str;

class DatabaseSeeder extends Seeder

{

/**

* Run the database seeders.

*

* @return void

*/

public function run()

{

DB::table('users')->insert([

'name' => Str::random(10),

'email' => Str::random(10).'@gmail.com',

'password' => Hash::make('password'),

]);

}

}

3 method's signature. They will automatically be resolved via the Laravel service container.

Sử dụng các nhà máy mô hình

Tất nhiên, việc chỉ định thủ công các thuộc tính cho mỗi hạt giống mô hình là cồng kềnh. Thay vào đó, bạn có thể sử dụng các nhà máy mô hình để thuận tiện tạo ra một lượng lớn hồ sơ cơ sở dữ liệu. Đầu tiên, xem lại tài liệu nhà máy mô hình để tìm hiểu cách xác định các nhà máy của bạn.

Ví dụ: hãy tạo 50 người dùng mà mỗi người có một bài đăng liên quan:

use App\Models\User;

/**

* Run the database seeders.

*

* @return void

*/

public function run()

{

User::factory()

->count(50)

->hasPosts(1)

->create();

}

Gọi thêm những người gieo hạt

Trong lớp DatabaseSeeder, bạn có thể sử dụng phương thức

namespace Database\Seeders;

use Illuminate\Database\Seeder;

use Illuminate\Support\Facades\DB;

use Illuminate\Support\Facades\Hash;

use Illuminate\Support\Str;

class DatabaseSeeder extends Seeder

{

/**

* Run the database seeders.

*

* @return void

*/

public function run()

{

DB::table('users')->insert([

'name' => Str::random(10),

'email' => Str::random(10).'@gmail.com',

'password' => Hash::make('password'),

]);

}

}

0 để thực hiện các lớp hạt giống bổ sung. Sử dụng phương thức

namespace Database\Seeders;

use Illuminate\Database\Seeder;

use Illuminate\Support\Facades\DB;

use Illuminate\Support\Facades\Hash;

use Illuminate\Support\Str;

class DatabaseSeeder extends Seeder

{

/**

* Run the database seeders.

*

* @return void

*/

public function run()

{

DB::table('users')->insert([

'name' => Str::random(10),

'email' => Str::random(10).'@gmail.com',

'password' => Hash::make('password'),

]);

}

}

0 cho phép bạn chia nhỏ cơ sở dữ liệu của mình thành nhiều tệp để không có lớp gieo hạt nào trở nên quá lớn. Phương pháp

namespace Database\Seeders;

use Illuminate\Database\Seeder;

use Illuminate\Support\Facades\DB;

use Illuminate\Support\Facades\Hash;

use Illuminate\Support\Str;

class DatabaseSeeder extends Seeder

{

/**

* Run the database seeders.

*

* @return void

*/

public function run()

{

DB::table('users')->insert([

'name' => Str::random(10),

'email' => Str::random(10).'@gmail.com',

'password' => Hash::make('password'),

]);

}

}

0 chấp nhận một loạt các lớp Seeder cần được thực thi:

/**

* Run the database seeders.

*

* @return void

*/

public function run()

{

$this->call([

UserSeeder::class,

PostSeeder::class,

CommentSeeder::class,

]);

}

Tắt các sự kiện mô hình

Trong khi chạy hạt giống, bạn có thể muốn ngăn các mô hình gửi các sự kiện. Bạn có thể đạt được điều này bằng cách sử dụng đặc điểm

use App\Models\User;

/**

* Run the database seeders.

*

* @return void

*/

public function run()

{

User::factory()

->count(50)

->hasPosts(1)

->create();

}

3. Khi được sử dụng, tính trạng

use App\Models\User;

/**

* Run the database seeders.

*

* @return void

*/

public function run()

{

User::factory()

->count(50)

->hasPosts(1)

->create();

}

3 đảm bảo không có sự kiện mô hình nào được gửi đi, ngay cả khi các lớp hạt giống bổ sung được thực thi thông qua phương thức

namespace Database\Seeders;

use Illuminate\Database\Seeder;

use Illuminate\Support\Facades\DB;

use Illuminate\Support\Facades\Hash;

use Illuminate\Support\Str;

class DatabaseSeeder extends Seeder

{

/**

* Run the database seeders.

*

* @return void

*/

public function run()

{

DB::table('users')->insert([

'name' => Str::random(10),

'email' => Str::random(10).'@gmail.com',

'password' => Hash::make('password'),

]);

}

}

0:

namespace Database\Seeders;

use Illuminate\Database\Seeder;

use Illuminate\Database\Console\Seeds\WithoutModelEvents;

class DatabaseSeeder extends Seeder

{

use WithoutModelEvents;

/**

* Run the database seeders.

*

* @return void

*/

public function run()

{

$this->call([

UserSeeder::class,

]);

}

}

Chạy gieo hạt giống

Bạn có thể thực hiện lệnh

namespace Database\Seeders;

use Illuminate\Database\Seeder;

use Illuminate\Support\Facades\DB;

use Illuminate\Support\Facades\Hash;

use Illuminate\Support\Str;

class DatabaseSeeder extends Seeder

{

/**

* Run the database seeders.

*

* @return void

*/

public function run()

{

DB::table('users')->insert([

'name' => Str::random(10),

'email' => Str::random(10).'@gmail.com',

'password' => Hash::make('password'),

]);

}

}

4 Artisan để gieo hạt cơ sở dữ liệu của bạn. Theo mặc định, lệnh

namespace Database\Seeders;

use Illuminate\Database\Seeder;

use Illuminate\Support\Facades\DB;

use Illuminate\Support\Facades\Hash;

use Illuminate\Support\Str;

class DatabaseSeeder extends Seeder

{

/**

* Run the database seeders.

*

* @return void

*/

public function run()

{

DB::table('users')->insert([

'name' => Str::random(10),

'email' => Str::random(10).'@gmail.com',

'password' => Hash::make('password'),

]);

}

}

4 chạy lớp

use App\Models\User;

/**

* Run the database seeders.

*

* @return void

*/

public function run()

{

User::factory()

->count(50)

->hasPosts(1)

->create();

}

8, từ đó có thể gọi các lớp hạt giống khác. Tuy nhiên, bạn có thể sử dụng tùy chọn

use App\Models\User;

/**

* Run the database seeders.

*

* @return void

*/

public function run()

{

User::factory()

->count(50)

->hasPosts(1)

->create();

}

9 để chỉ định một lớp gieo hạt cụ thể để chạy riêng lẻ:

php artisan db:seed

php artisan db:seed --class=UserSeeder

Bạn cũng có thể gieo hạt cơ sở dữ liệu của mình bằng lệnh

/**

* Run the database seeders.

*

* @return void

*/

public function run()

{

$this->call([

UserSeeder::class,

PostSeeder::class,

CommentSeeder::class,

]);

}

0 kết hợp với tùy chọn

/**

* Run the database seeders.

*

* @return void

*/

public function run()

{

$this->call([

UserSeeder::class,

PostSeeder::class,

CommentSeeder::class,

]);

}

1, sẽ bỏ tất cả các bảng và chạy lại tất cả các lần di chuyển của bạn. Lệnh này rất hữu ích để xây dựng lại hoàn toàn cơ sở dữ liệu của bạn. Tùy chọn

/**

* Run the database seeders.

*

* @return void

*/

public function run()

{

$this->call([

UserSeeder::class,

PostSeeder::class,

CommentSeeder::class,

]);

}

2 có thể được sử dụng để chỉ định một máy gieo hạt cụ thể để chạy:

php artisan migrate:fresh --seed

php artisan migrate:fresh --seed --seeder=UserSeeder

Buộc người gieo hạt phải chạy trong sản xuất

Một số hoạt động gieo hạt có thể khiến bạn thay đổi hoặc mất dữ liệu. Để bảo vệ bạn khỏi việc chạy các lệnh gieo hạt so với cơ sở dữ liệu sản xuất của bạn, bạn sẽ được nhắc xác nhận trước khi các máy gieo hạt được thực thi trong môi trường

/**

* Run the database seeders.

*

* @return void

*/

public function run()

{

$this->call([

UserSeeder::class,

PostSeeder::class,

CommentSeeder::class,

]);

}

3. Để buộc các máy gieo hạt chạy mà không có lời nhắc, hãy sử dụng cờ

/**

* Run the database seeders.

*

* @return void

*/

public function run()

{

$this->call([

UserSeeder::class,

PostSeeder::class,

CommentSeeder::class,

]);

}

4:

php artisan db:seed --force

Hạt DB ở Laravel là gì?

Laravel bao gồm khả năng gieo hạt cơ sở dữ liệu của bạn với dữ liệu bằng các lớp hạt giống. Tất cả các lớp hạt giống được lưu trữ trong thư mục cơ sở dữ liệu/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 cuộ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ự gieo hạt.. All seed classes are stored in the database/seeders directory. By default, a DatabaseSeeder class is defined for you. From this class, you may use the call method to run other seed classes, allowing you to control the seeding order.

Ý nghĩa của cơ sở dữ liệu hạt giống là gì?

Gieo hạt dữ liệu là quá trình điền vào cơ sở dữ liệu với một bộ dữ liệu ban đầu.Có một số cách này có thể được thực hiện trong EF Core: Dữ liệu hạt giống mô hình.Tùy chỉnh di chuyển thủ công.the process of populating a database with an initial set of data. There are several ways this can be accomplished in EF Core: Model seed data. Manual migration customization.

Tại sao gieo hạt được sử dụng trong Laravel?

Laravel cung cấp một công cụ để tự động bao gồm dữ liệu giả vào cơ sở dữ liệu.Quá trình này được gọi là gieo hạt.Các nhà phát triển có thể thêm chỉ đơn giản là kiểm tra dữ liệu vào bảng cơ sở dữ liệu của họ bằng cách sử dụng máy gieo hạt cơ sở dữ liệu.Nó cực kỳ hữu ích vì thử nghiệm với các loại dữ liệu khác nhau cho phép các nhà phát triển phát hiện lỗi và tối ưu hóa hiệu suất.allows developers to detect bugs and optimize performance.

Hạt giống trong phụ trợ là gì?

Hạt giống là gì?Một hạt giống là một mục có định danh duy nhất trong phần phụ trợ lưu trữ-IT.Một hạt giống có dữ liệu liên quan không thay đổi, như ngày mà nó đã được thêm hoặc cập nhật và lịch sử thu thập dữ liệu của nó.Hạt giống cũng có dữ liệu có thể được chỉnh sửa như siêu dữ liệu cấp hạt, ghi chú và thậm chí cả URL hạt giống.an item with a unique identifier in the Archive-It backend. A seed has associated data that does not change, like the dates on which it was added or updated and its crawl history. Seeds also have data that can be edited like Seed Level Metadata, notes, and even the seed URL.