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

工厂中的附加参数被添加到表插入命令中

司马俊晖
2023-03-14

在我的Laravel 5.8应用程序中,我使用database/factories/HostelReviewFactory.php中的定义创建工厂:

$factory->define(App\HostelReview::class, function (Faker $faker, $parentParams) {
    $flag_status= 'N';
    if( rand(1,4) == 1) {
        $flag_status= 'R';
    }

    $parent_hostel_id= $parentParams['parent_hostel_id'];

    return [

        'hostel_id'             =>  $parent_hostel_id,
        'email_inquiried'       =>  $faker->safeEmail,

        'full_name'             => $faker->name,
        'status'                => 'A',
        'flag_status'           => $flag_status,
        'review'                => $faker->text,
        'stars_rating_type_id'  => rand(1,5),
        'created_at'            => $faker->dateTimeBetween(  '-2 years', 'now', config('app.timezone')  ) ,
    ];
});

并从seeder数据库/seeds/hostelReviewTableSeeder.php运行它:

factory(App\HostelReview::class, 10)->create([ 'parent_hostel_id' => 30 ]);

我得到一个错误:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'parent_hostel_id' in 'field list' (SQL: insert into `ad_hostel_reviews` (`hostel_id`, `email_inquiried`, `full_name`, `status`, `flag_status`, `review`, `stars_rating_type_id`, `created_at`, `parent_hostel_id`) values (30, beer.ozella@example.com, Jamel Konopelski, A, N, Quis mollitia voluptas occaecati corrupti ut. Commodi dolorem delectus architecto nesciunt voluptatem quos. Itaque natus adipisci dicta impedit sint. Alias inventore accusantium ea., 3, 2018-02-13 01:18:34, 30))

看起来$parentParams中的所有值都添加到了目标表的字段列表中,我不需要它,因为$parentParams只是我想设置为factory的参数。怎么了?

共有1个答案

哈烨熠
2023-03-14

如果我正确理解了您的需求,您希望能够与一家与旅馆有关系的工厂创建HosterView

传递给工厂的参数(App\HosterView::class,10)-

  • 定义将附加到审阅的默认宿舍
  • 能够为评审注入特定的宿舍

这就是HostelReview的样子:

$factory->define(App\HostelReview::class, function (Faker $faker) {
    $flag_status= 'N';
    if( rand(1,4) == 1) {
        $flag_status= 'R';
    }

    return [

        'hostel_id'             => function () {
            return factory(App\Hostel::class)->create()->id; // This will create a new Hostel and set the id in case you did not express in the caller the hostel_id to inject
        },
        'email_inquiried'       => $faker->safeEmail,
        'full_name'             => $faker->name,
        'status'                => 'A',
        'flag_status'           => $flag_status,
        'review'                => $faker->text,
        'stars_rating_type_id'  => rand(1,5),
        'created_at'            => $faker->dateTimeBetween(  '-2 years', 'now', config('app.timezone')  ) ,
    ];
});

对于第二点,你可以用这个调用覆盖默认的附加旅馆:

factory(App\HostelReview::class, 10)->create(['hostel_id' => 30]);
 类似资料:
  • 我正在尝试使用maven exec插件运行一个java程序,使用exec:exec目标 我需要向类路径添加一个额外的jar(sun工具jar) 由于includePluginDependencies仅适用于exec:java目标,我想在arguments部分手动添加它,但找不到将其连接到基本类路径的方法。问题是,由于jar被定义为系统作用域,maven不会将其添加到运行时类路径中,因此我需要手动添

  • 本文向大家介绍javascritp添加url参数将参数加入到url中,包括了javascritp添加url参数将参数加入到url中的使用技巧和注意事项,需要的朋友参考一下 将对象参数加入到url中,如果原来url中有则覆盖 js代码

  • 我正在使用Spring微服务构建微服务,我有两个相关的问题。 1。我在Api网关(即Zuul服务器)中有Spring安全性,现在Zuul不会转发任何请求,如果我已经从流中读取请求一次以身份验证(从POST请求中获取用户名/通行证) 如何读取请求,然后再次将相同的请求转发给下游服务? 2.Zuul没有转发request.set属性()到下游服务,所以一个解决办法是使用ctx.addZuulask e

  • 本文向大家介绍Linux将命令添加到PATH中的方法,包括了Linux将命令添加到PATH中的方法的使用技巧和注意事项,需要的朋友参考一下 linux LinuxApacheBash 简单说PATH就是一组路径的字符串变量,当你输入的命令不带任何路径时,LINUX会在PATH记录的路径中查找该命令。有的话则执行,不存在则提示命令找不到。比如在根目录/下可以输入命令ls,在/usr目录下也可以输入l

  • 查看GoogleSheetsAPI,似乎很容易将行附加到现有的电子表格(这里有文档记录)。 我不知道如何做的是在包含多个工作表的电子表格中的特定工作表中追加一行。工作表似乎有自己的ID(这里记录了),但是追加操作调用了一个。附加到包含多个工作表的电子表格似乎总是附加到电子表格中当前的“第一个”工作表。 有人知道如何使用API/SDK请求将行附加到特定工作表中吗?

  • 我想知道是否可以将spring的其他参数(如)添加到spring boot app中,以便将其作为服务运行。 我检查了由自动生成的脚本: 所以也许它可以通过maven插件的选项来完成,但是除了JVM参数之外找不到其他的,这不是那么有用...