使用工厂在Laravel 5中播种枢轴表

时间:2018-04-12 08:20:27

标签: laravel laravel-5 eloquent

    public function run()
    {
    factory(App\ProjectProcurementManagementPlan::class, 5)->create()->each(function ($a) {
        $a->paps()
            ->saveMany( factory(App\ProjectsProgramsActivities::class, 5)->make() )
            ->each(function ($b) {
                $b->pap_schedules()->save(factory(App\PapSchedule::class)->make());
                $b->procurement_modes()-> ????????;
            });
        });
    }

我这里有这个代码。我想在创建上面指出的每个模型后播种数据透视表。 $b->procurement_modes()-> ????????将成为我将工厂的东西带到数据透视表的部分。

数据透视表看起来像这样。

| id | pap_id | procurement_mode_id |

我的计划是,为了简单起见,我只需将一个采购_模式附加到每个创建的ProjectsProgramsActivities。

我尝试过使用

$b->procurement_modes()->sync(factory(App\PAPProcurementMode::class)->make());

但它给了我一个

SQLSTATE[HY000]: General error: 1366 In correct integer value: '' for column 'procurement_mode_id' at row 1 (SQL: insert into paps_procurement_modes (pap_i, procurement_mode_id) values (1, ))

该数据透视表的工厂是

    $factory->define(App\PAPProcurementMode::class, function (Faker $faker) {
    return [
        'procurement_mode_id' => 1,
    ];
});

那么最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

对于那些会遇到这样的问题的人。

我只是

$ids = 1; $b->procurement_modes()->sync($ids);