如何解决Laravel 使用外键从旧数据库中获取和复制数据到新数据库
嗨,我想将表 A 中的数据从 DB A 迁移到 DB B 中的表 A。我构建了 laravel 函数来获取旧数据库中的数据并将其复制到新数据库中。
在表 A 中 DB A
1 A01 ABC 001
2 A02 BCD 002
3 A03 DDD
在表 A DB B 中
两个表都与外键有关系,CodeProduct 为 FK 表 C。
我的问题是我在尝试获取 ID 时出错,因为 OLD DB 中的 CODEPRODUCT 为 NULL。如果不为 null 就没有错误。
我尝试像下面的代码一样禁用和启用 FK
DB::statement('SET FOREIGN_KEY_CHECKS = 0;');
但得到错误 sql Server]'=' 附近的语法不正确。 (sql: SET FOREIGN_KEY_CHECKS=0;)
DB::statement('SET FOREIGN_KEY_CHECKS = 0;');
$datas = codeloanpackage::get();
DB::connection('sqlsrv2')
->table('CodeLoanPackages')
->insert([
'Id' => $data->id,"Code" => $data->code,"Name" => $data->name,"CodeProduct" => $data->CodeProducts->Id]);
}
// Enable foreign key checks!
DB::statement('SET FOREIGN_KEY_CHECKS=1;');
解决方法
您在 MSSQL 数据库上使用 MySQL 原始查询。
SET FOREIGN_KEY_CHECKS = 0;
和
SET FOREIGN_KEY_CHECKS = 1;
它在 MSSQL 上的等价物可能是:
Alter Table myTable
NOCHECK Constraint All
和
Alter Table myTable
CHECK Constraint ALL
编辑(更好的选择),使用 Eloquent
Schema::disableForeignKeyConstraints();
和
Schema::enableForeignKeyConstraints();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。