📅  最后修改于: 2023-12-03 14:43:49.222000             🧑  作者: Mango
在 Laravel 中,Kindergarten 是种子文件的默认目录。种子文件是用于填充数据库表的最佳实践之一。
当我们第一次使用种子文件时,我们经常会在填充表中使用特定的文件格式和代码结构,这些文件和代码结构能够优化填充过程和代码的可读性。
Laravel 为我们提供了两个命令来帮助我们构建种子文件目录。
第一个命令是 make:seed
,它将创建一个新的种子类。这个命令默认的目录是 database/seeds
。
命令的语法:
php artisan make:seed NameOfTheSeedClass
例如,我们要创建一个新的名为 UsersSeeder.php
的种子类,我们可以使用以下命令:
php artisan make:seed UsersSeeder
第二个命令是 make:factories
,它将创建一个新的工厂类。这个命令默认的目录是 database/factories
。
命令的语法:
php artisan make:factory NameOfTheFactoryClass
例如,我们要创建一个新的名为 UserFactory.php
的工厂类,我们可以使用以下命令:
php artisan make:factory UserFactory
如果想要将种子文件目录更新为自己喜欢的位置,可以在 config/database.php
文件中的 seeds
键中修改:
'connections' => [
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
...
'seeds' => [
'directory_path' => '<your-seeds-directory-path>',
],
],
...
],
我们可以使用以下代码结构来创建种子文件,以在构建填充表时提高整体代码可读性。
<?php
use Illuminate\Database\Seeder;
use App\Models\User;
class UsersSeeder extends Seeder {
/**
* Run the database seeds.
*
* @return void
*/
public function run() {
factory(User::class, 50)->create();
}
}
在这个种子文件中,我们导入了命名空间 Illuminate\Database\Seeder
和 App\Models\User
。然后,我们继承 Seeder
类来创建新的种子类。
在 run()
方法中,我们调用了 User
模型的 factory
方法来创建 50 个用户。
在工厂文件中,我们可以使用以下代码结构来创建工厂类:
<?php
use Faker\Generator as Faker;
use App\Models\User;
/** @var \Illuminate\Database\Eloquent\Factory $factory */
$factory->define(User::class, function (Faker $faker) {
return [
'name' => $faker->name,
'email' => $faker->unique()->safeEmail,
'password' => bcrypt('password'),
'remember_token' => str_random(10),
];
});
在这个工厂文件中,我们导入了命名空间 Faker\Generator
和 App\Models\User
。然后,我们创建了一个名为 $factory
和类型为 Illuminate\Database\Eloquent\Factory
的变量,并使用依赖注入的方式将 $factory
变量的 define 方法注册到 User
模型中。
然后,我们使用 $faker
来填充 User
模型的相应字段。
种子文件和工厂文件是填充数据库表的最佳实践之一,可以加速我们的开发流程,并提高整体代码的可读性。在创建它们时,请记住使用特定的文件格式和代码结构以帮助未来的开发人员更轻松地阅读和维护您的代码。