Laravel工厂和枢轴工作台播种
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Laravel工厂和枢轴工作台播种相关的知识,希望对你有一定的参考价值。
我有3张桌子Applicant
,Skills
和Applicant_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 工厂播种器吗?