Laravel工厂和枢轴工作台播种

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Laravel工厂和枢轴工作台播种相关的知识,希望对你有一定的参考价值。

我有3张桌子ApplicantSkillsApplicant_skill。这里Applicant_skill是数据透视表。一个申请人有很多技能。我想写下面的工厂。

**ApplicantSkillFactory.php**

<?php

use FakerGenerator as Faker;

$factory->define(AppApplicant_skill::class, function (Faker $faker) {
    return [
        'applicant_id' => AppApplicant::all()->random()->id,
        'skill_id' => AppSkills::all()->random()->id,
    ];
});

ApplicantsTableSeeder.php

<?php

use IlluminateDatabaseSeeder;

class ApplicantsTableSeeder extends Seeder
{
    public function run()
    {
        factory(AppApplicant::class,20)->create()->each(function ($u) {
            $u->Applicant_skill()->associate(factory(AppApplicant_skill::class)->make());
        });
    }
}

现在我该如何播种这3张桌子?

答案

Applicant_skill工厂不需要 在创建申请人时,只需从技能中获取随机ID并附加

ApplicantsTableSeeder.php

<?php

use IlluminateDatabaseSeeder;

class ApplicantsTableSeeder extends Seeder
{
    public function run()
    {
        factory(AppApplicant::class,20)->create()->each(function ($a) {
            $a->Applicant_skill()->attach(
                AppSkills::all()->random()->id
            );
        });
    }
}

以上是关于Laravel工厂和枢轴工作台播种的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 8 Jetstream:无法使用使用工厂和播种机播种的帐户登录

我可以合并一个运行 insert into 的 .sql 文件和一个在 2 列上创建虚拟数据的 Laravel 工厂播种器吗?

Laravel播种工厂但扩展它

如何将 null 参数从播种机传递给 Laravel 工厂?

不能在 Laravel 8 中使用遗留工厂

Laravel - 播种关系