Laravel 4.2:将数据库记录从一个数据库复制到另一个数据库

Mar*_*ker 5 php eloquent laravel-4

我需要在Laravel 4.2中将一个记录子集从一个数据库复制到另一个数据库

我编写了一个工匠任务,加载我需要从"默认"数据库连接复制的模型,现在需要将它们保存到第二个数据库连接(在config/database.php中定义).我找不到的是使用模型的save()方法保存到默认连接以外的数据库的任何方法.

这可能吗?我可以将我的保存"推送"到第二个数据库连接吗?或者我是否需要更改为"拉"逻辑,反转我的数据库连接定义,并在保存到"默认"之前从"第二"连接加载数据?

Mar*_*ker 1

正如 @Filip 所指出的,在保存模型之前,有必要将模型上的连接设置为第二个(目标)数据库。

但是,还需要将 id 设置id为 null(除非您确定第二个数据库上不存在具有该 id 的记录,但我不能)以确保分配新的递增 id 值。

并且在保存之前还需要将exists模型的属性设置为false。从源数据库读取记录后,该值会true出现在模型中,因为记录已从源数据库成功读取(而不是创建为新记录)。重置失败exists会导致 Laravel 尝试执行 an UPDATE WHERE id = $model->id,这不会向数据库写入任何内容,因为没有要更新的匹配记录(具有 null id)。设置exists为可false确保保存作为INSERT.