当前位置: 首页 > 知识库问答 >
问题:

为具有两个外键的表创建播种器

邬友樵
2023-03-14

我试图用两个外键(分别用于categories和sub_categories表的category_id和sub_categories_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,
                ]);
            }
        });
    });

尝试了这个,但它返回了一个错误

未定义变量:类别

我可以创建种子只有子_类,但我需要创建的类别以及。我该怎么做?

共有2个答案

陆烨磊
2023-03-14

您正在使用闭包遍历子类别模型中的每个项。变量的初始化不在闭包的范围内。为了访问$类别,您需要使用use关键字使其可用:

SubCategory::all()->each(function ($sub_category) {...});

SubCategory::all()->each(function ($sub_category) use ($category) {...});
尹臻
2023-03-14

正如您所知,您正在向each()方法传递一个匿名函数。匿名函数无权访问其作用域之外的变量。

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

Category::all()->each(function ($category) {
    SubCategory::all()->each(function ($sub_category) use ($category) {
        // now you have access to the $category
    });
});

如您所见,我通过use($category)将其传递给函数。

 类似资料:
  • 如何使用hibernate注释实现下表? 当前代码为:(为简洁起见,已删除) 使用者 社交网络 SocialProfile公司 显然我的代码现在不能正常工作。有人能解释一下吗?

  • 我有表,和,一个用户有很多帖子,每个帖子有很多评论(在评论表中),还有一个用户有很多评论,但不完全需要匿名用户(在评论表中),下面的代码为每个帖子播种一些评论,但user_id从不由评论的所有者填写。我希望评论有相关的user_id注入数组外面

  • 我创建了两个表: > 具有列 (主键、自动递增)、、、的表 表包含列(主键,自动增量),(的外键), 我有表格来创建具有现有角色的新员工。要插入的数据示例: 我想在SQL Server 2014中编写一个存储过程,将新的staff插入到<code>tblStaff。 那我该怎么办? 如果我的问题与其他问题重复,我很抱歉。我对SQL更感兴趣。谢谢你的帮助。

  • 我现在对hibernate有一个很奇怪的问题。在一个表上,它创建了一个引用它自己的外键。该列也是主键。这基本上阻止了我从表中删除任何行。 在日志中我可以看到一行字:

  • 我们系统的所有用户都来自一个主“用户”类。同样,我们希望以相同的方式构造数据库,拥有一个主“用户”表,该表与特定用户类型的必要表连接,以提供额外的用户信息。 以这三个基本表格为例: 表用户 user_id|user_email|user_firstname|user_lastname|... 表雇员 user_id|employee_staff_number|... 表管理 user_id|adm

  • 我有0编码知识,但希望你们可以协助修改我在网上找到的代码,以创建多个按钮来执行不同的bat文件。我会将其保存为hta文件,以便在win shell环境中运行。谢谢!!!