mysql php关联(迁移)完整表之间的表

时间:2015-05-05 17:03:31

标签: php mysql database postgresql laravel-5

我遇到了与桌子有关的问题。简而言之,我将表从Postgres数据库迁移到mysql数据库。由于我使用的是Laravel,因此Eloquent可以轻松迁移表格"用户"和"团体"因为它们也是对象,所以我所做的只是将postgres结果转换为Json,添加每个元素并将其保存到laravel的mysql DB中。 用户和群组之间存在多对多关系。 Postgres还包含一个"用户组"有这种关系的表。而且我设法保持与postgres相同的身份。但是将它保存到mysql的代码与之前略有不同(保存用户和组)。这就是我正在做的事情:

foreach ($jsonData as $rel) {
    DB::table('group_user')->insert(array(
        array('user_id' => $rel['user_id']),
        array('group_id' => $rel['group_id']),
    ));
}

两种数据库中的DB格式基本相同。 唯一的区别是group_user有自己的自动递增ID以及user_id和group_id的外键

尝试运行上述功能会导致此结果。

SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a
child row: a foreign key constraint fails (`ProjectName`.`group_user`, 
CONSTRAINT `group_user_group_id_foreign` FOREIGN KEY (`group_id`) REFERENCES
`groups` (`id`)) (SQL: insert into `group_user` (`user_id`) values (1), (1))

我不明白为什么,有一个id为1的用户和一个id为1的组。该表在postgres DB中完全正常运行。我担心的是,我与现有数据建立了关系,这可能是造成这些问题的原因。 感谢您的时间和耐心。

编辑:更正的查询就像这个btw

foreach ($jsonData as $rel) {
    DB::table('group_user')->insert(array(
        array('user_id' => $rel['user_id'], 'group_id' => $rel['group_id']),
    ));
}

非常感谢@Mark B

0 个答案:

没有答案