📜  laravel 种子特定文件 - PHP (1)

📅  最后修改于: 2023-12-03 14:43:49.222000             🧑  作者: Mango

Laravel 种子特定文件 - PHP

在 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\SeederApp\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\GeneratorApp\Models\User。然后,我们创建了一个名为 $factory 和类型为 Illuminate\Database\Eloquent\Factory 的变量,并使用依赖注入的方式将 $factory 变量的 define 方法注册到 User 模型中。

然后,我们使用 $faker 来填充 User 模型的相应字段。

结论

种子文件和工厂文件是填充数据库表的最佳实践之一,可以加速我们的开发流程,并提高整体代码的可读性。在创建它们时,请记住使用特定的文件格式和代码结构以帮助未来的开发人员更轻松地阅读和维护您的代码。