使用两个外键为 table 创建播种机
Create seeder for a table with two foreignkeys
我试图用两个外键(category_id 和 sub_category_id 用于类别和 sub_categories tables 为产品 table 创建播种机分别)。
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,
]);
}
});
});
试过了,但它返回
错误
Undefined variable: category
我可以只使用 sub_category 创建播种机,但我还需要使用类别创建。我该怎么做?
您正在使用闭包遍历 SubCategory
模型中的 each
项。 $category
变量的初始化超出了闭包的范围。为了访问 $category
,您需要使用 use
关键字使其可用:
SubCategory::all()->each(function ($sub_category) {...});
到
SubCategory::all()->each(function ($sub_category) use ($category) {...});
如您所知,您正在将匿名函数传递给 each()
方法。匿名函数无法访问其范围之外的变量。
您必须以这种方式将 $category
变量传递给 SubCategory 的 each()
方法:
Category::all()->each(function ($category) {
SubCategory::all()->each(function ($sub_category) use ($category) {
// now you have access to the $category
});
});
如您所见,我通过 use ($category)
将其传递给函数。
我试图用两个外键(category_id 和 sub_category_id 用于类别和 sub_categories tables 为产品 table 创建播种机分别)。
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,
]);
}
});
});
试过了,但它返回
错误Undefined variable: category
我可以只使用 sub_category 创建播种机,但我还需要使用类别创建。我该怎么做?
您正在使用闭包遍历 SubCategory
模型中的 each
项。 $category
变量的初始化超出了闭包的范围。为了访问 $category
,您需要使用 use
关键字使其可用:
SubCategory::all()->each(function ($sub_category) {...});
到
SubCategory::all()->each(function ($sub_category) use ($category) {...});
如您所知,您正在将匿名函数传递给 each()
方法。匿名函数无法访问其范围之外的变量。
您必须以这种方式将 $category
变量传递给 SubCategory 的 each()
方法:
Category::all()->each(function ($category) {
SubCategory::all()->each(function ($sub_category) use ($category) {
// now you have access to the $category
});
});
如您所见,我通过 use ($category)
将其传递给函数。