جشنواره عیدانه راکت | عضویت ویژه راکت برای آخرین بار | افزایش قیمت‌ها از سال جدید | و ...

مشاهده اطلاعات بیشتر...
ثانیه
دقیقه
ساعت
روز
محمد
4 سال پیش توسط محمد مطرح شد
1 پاسخ

استفاده از factory برای روابط بین جداول

سلام من مشکلی دارم توی استفاده از 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 ساخته بشه ممنون.


ثبت پرسش جدید
محمد
تخصص : web developer
@mohammad.ali.khassepas 4 سال پیش مطرح شد
0

من مشکل خودم رو اینطور حل کردم

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
                ]));

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام