سلام من مشکلی دارم توی استفاده از factory ها در روابط بین جداول
این ها میگریشن های من هستن
Schema::create('main_categories', function (Blueprint $table) {
$table->id();
$table->string('name', 100)->nullable(false);
});
Schema::create('categories', function (Blueprint $table) {
$table->id();
$table->string('name', 100)->nullable(false);
$table->unsignedBigInteger('main_category_id');
$table->foreign('main_category_id')
->references('id')
->on('main_categories')
->cascadeOnDelete();
});
Schema::create('sub_categories', function (Blueprint $table) {
$table->id();
$table->string('name', 100)->nullable(false);
$table->unsignedBigInteger('category_id');
$table->foreign('category_id')
->references('id')
->on('categories')
->cascadeOnDelete();
});
فکتوری های من هم اینها است
$factory->define(MainCategory::class, function (Faker $faker) {
return [
'name'=>$faker->name
];
});
$factory->define(Category::class, function (Faker $faker) {
return [
'name' => $faker->name
];
});
$factory->define(SubCategory::class, function (Faker $faker) {
return [
'name' => $faker->name
];
});
همون طور که می بینید mainCategory با جدول Category رابطه یک به چند داره و جدول Category با جدول SubCategory هم رابطه یک به چند دارد اما من موقع استفاده از این factory ها به مشکل می خورم .
روش استفاده من اینطور است
factory(MainCategory::class, 5)->create()->each(function ($mainCategory) {
$mainCategory->categories()->saveMany(factory(Category::class, 7)->make()->each(function ($category){
$category->subCategories()->saveMany(factory(SubCategory::class, 7)->make());
}));
});
ممنون می شم بفرمایید چطور می تونم با استفاده از فکتوری ها این روابط رو پیاده کنم.درواقع هدف من این است که می خواهم به اضای هر MainCategory چند Category ساخته بشه و به اضای هر Category چند SubCategory ساخته بشه ممنون.
من مشکل خودم رو اینطور حل کردم
factory(MainCategory::class, 3)->create()->each(function ($mainCategory) {
$mainCategory->categories()->saveMany(factory(Category::class, 4)->create([
'main_category_id' => $mainCategory->id
])->each(function ($category) {
$category->subCategories()->saveMany(factory(SubCategory::class, 5)->create([
'category_id' => $category->id
]));
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟