为具有两个外键的表创建种子机

问题描述 投票:0回答:1

我正在尝试使用两个外键(分别为category和sub_categories表的category_id和sub_category_id)为Products表创建一个种子器。

Category::all()->each(function ($category) {
        SubCategory::all()->each(function ($sub_category) {
            $faker = Faker::create();
            for($i = 0; $i < 3; $i++) {
                DB::table('products')->insert([
                    'product_name' => $faker->name,     
                    'product_description' =>  $faker->sentence,
                    'product_price' =>  rand(100, 1000),
                    'product_quantity' =>  rand(10,100),
                    'category_id' => $category->id,
                    'sub_category_id' =>  $sub_category->id,
                ]);
            }
        });
    });

尝试过,但返回的错误为我>>

未定义变量:类别

我只能使用sub_category创建播种机,但我也需要创建类别。我应该怎么做?

我正在尝试使用两个外键(分别为category和sub_categories表的category_id和sub_category_id)为Products表创建一个种子器。 Category :: all()->每个(函数($ ...

laravel migration faker laravel-seeding laravel-factory
1个回答
0
投票

您正在使用闭包浏览each模型中的SubCategory项目。 $category变量的初始化不在闭包的范围内。为了访问$category,您需要使用use关键字使其可用:


0
投票

您知道,您正在将匿名函数传递给each()方法。匿名函数无法访问其范围之外的变量。]​​>

您必须通过这种方式将$category变量传递给子类别的each()方法:

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.