在 ModelFactory Laravel 中播种多个自定义行/条目

Nuc*_*eus 6 php laravel eloquent

如何在 Laravel 中使用 ModelFactory 播种多行?

里面ModelFactory.php我有以下代码:

$factory->define(App\User::class, function (Faker $faker) {
    static $password;

    return [
        'name' => 'Admin',
        'Description' => 'Administrators have full access to everything.'
    ];
});
Run Code Online (Sandbox Code Playgroud)

如何在不使用原始表达式的情况下添加以下数组?

[
    'name' => 'Admin',
    'description' => 'Administrators have full access to everything.',
],
[
    'name' => 'User',
    'description' => 'User have normal access.',
],
Run Code Online (Sandbox Code Playgroud)

谢谢

Moo*_*man 6

您可以使用序列()

User::factory()->count(2)->sequence(['name' => 'admin'],['name' => 'user'])
->create()
Run Code Online (Sandbox Code Playgroud)

Laravel 文档中的示例

$users = User::factory()
            ->count(10)
            ->sequence(fn ($sequence) => ['name' => 'Name '.$sequence->index])
            ->create();
Run Code Online (Sandbox Code Playgroud)

来源https://laravel.com/docs/8.x/database-testing#sequences


lou*_*her 1

假设您要在数据库中添加 100 个用户。

创建UserFactory.php一个database/factories

<?php

use Faker\Generator as Faker;

$factory->define(App\User::class, function (Faker $faker) {

    return [
        'name' => 'Admin',
        'Description' => 'Administrators have full access to everything.'
    ];
});
Run Code Online (Sandbox Code Playgroud)

然后,在database/seeds/DatabaseSeeder.php

<?php

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        factory(App\User::class, 100)->create();
    }
}
Run Code Online (Sandbox Code Playgroud)

您可以在 Laravel 官方文档中找到有关播种的更多详细信息。

  • 但这不允许您植入自定义数据,您有 100 个虚假数据条目。 (2认同)