在多个系统中共享数据库

时间:2016-08-10 15:58:46

标签: laravel laravel-5 laravel-5.2 database-migration

我已将Laravel 5.2配置为包含2个数据库连接。我知道如何连接到我的控制器,模型等中的每一个。我唯一不确定的是以下内容。

系统A有一个用户表,其中包含系统A的所有用户。

我现在在系统B中工作。系统B有自己的用户表和系统B的所有用户。系统B需要获得系统A中的用户列表。

这就是问题所在。对于系统B,我正在创建我的迁移。系统B允许该系统的用户创建项目,因此我的迁移如下

Schema::create('projects', function (Blueprint $table) {
    $table->increments('id');
    $table->string('projectName')->default('');
    $table->string('projectValue')->default('');
    $table->integer('user_id')->unsigned()->default(0);
    $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
    $table->integer('systemA_user_id')->unsigned()->default(0);
    $table->foreign('systemA_user_id')->references('id')->on('users')->onDelete('cascade');

    $table->engine = 'InnoDB';
});

通过执行以下操作,我可以将系统B中的项目链接到系统B中的用户。

$table->integer('user_id')->unsigned()->default(0);
  $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');

但是,尽管此项目是在系统B中创建的,但它是针对系统A中的用户的。因此我添加了以下内容

$table->integer('systemA_user_id')->unsigned()->default(0);
    $table->foreign('systemA_user_id')->references('id')->on('users')->onDelete('cascade');

问题是它当前正在引用System B用户表。我需要它做的是引用System A用户表。

这样的事情会成为可能吗?

由于

2 个答案:

答案 0 :(得分:0)

我相信你可以这样做references('connection.tablename.id')

答案 1 :(得分:0)

它闻起来像一个糟糕的设计。您必须考虑在系统之间建立某种API连接,而不是尝试使用低级别的基础架构来直接进行通信。微服务思维方式。