2016-08-10 4 views
0

Я сконфигурировал Laravel 5.2, чтобы содержать 2 подключения к базе данных. Я знаю, как я могу подключиться к каждому из контроллеров, моделей и т. Д. Единственное, что я не уверен в следующем, это следующее.Совместное использование баз данных в нескольких системах

система А есть таблица пользователей, которые содержат всех пользователей системы А.

Сейчас я работаю в системе B. Система B имеет свою собственную таблицу пользователей со всеми пользователями системы B. System 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, то для пользователя в системе А. Поэтому я добавил следующие

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

проблема заключается в том, что в настоящее время она ссылается на вкладку пользователи системы B ле. Мне нужно, чтобы это было ссылкой на таблицу «Системные пользователи».

Возможно ли подобное?

Благодаря

ответ

0

Я считаю, что вы могли бы сделать это таким Ват references('connection.tablename.id')

0

Пахнет плохой дизайн. Вы должны рассмотреть возможность установления какого-либо соединения API между вашими системами вместо того, чтобы пытаться напрямую поддерживать инфраструктуру низкого уровня. Микрофонный подход.

+0

Что было бы лучшим вариантом в этой ситуации? Системе B необходимо получить что-то из базы данных System A. Должен ли я создавать API для этого? –

+0

Если есть точка в разделении баз данных, тогда возникает причина для логического разделения ваших систем и последующего подключения через API. Возможно, даже с использованием разных фреймворков или даже языков программирования. – dogik

+0

Однако, с другой стороны, если вы не думаете, что у вас есть время/желание/хорошая причина для разделения ваших систем на уровне кода или если это наследие разделения баз данных, я бы попытался объединить эти базы данных для создания одна, монолитная база данных. Если вы ожидаете большого количества связей между базами данных (чтение объединений, подзапросов и т. Д.) И принимая во внимание, что вы используете laravel (где красноречиво иногда бывает жесткая задница, даже когда вы работаете с единой базой данных), я бы рекомендовал столкнуться с базами данных, если возможное. – dogik

Смежные вопросы