【问题标题】:Laravel Get and copy data from old Database to new Database with Foreign keyLaravel 使用外键获取旧数据库中的数据并将其复制到新数据库
【发布时间】:2021-02-10 01:47:09
【问题描述】:

您好,我想将表 A 中的数据从数据库 A 迁移到数据库 B 中的表 A。我构建了 laravel 函数来获取旧数据库中的数据并将其复制到新数据库。

在表 A DB A

ID 代码名称代码产品

1 A01 ABC 001

2 A02 BCD 002

3 A03 DDD

在表 A DB B

ID 代码名称代码产品

两个表都与外键有关系,CodeProduct为FK。

我的问题是尝试获取 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;');

        

【问题讨论】:

  • 尝试this 建议,如果有帮助,请随时将其写为答案。找到它here

标签: laravel copy foreign-keys migrate


【解决方案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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-09
    • 1970-01-01
    • 2019-03-21
    • 1970-01-01
    相关资源
    最近更新 更多