Решение 1
В зависимости от того, какую мультитенантную настройку вы используете, она может зависеть от установки имени соединения на модели. Например, вы можете установить соединение для модели Post следующим образом:
Models / Post. php
/**
* Get the current connection name for the model.
*
* @return string|null
*/
public function getConnectionName()
{
return 'tenant_connection';
}
Затем вам нужно определить tenant_connection
введите database.connections
config (config/database.php
). Я знаю, hyn/multitenant
делает это следующим образом (https://packagist.org/packages/hyn/multi-tenant).
Решение 2
Еще один, меньший способ сделать это - включить соединение на - go во время создания запросов, например так:
DB::setDefaultConnection('custom_connection');
Post::query()->where('status', 1)->get();
// Revert to default connection, assuming `mysql` here.
DB::setDefaultConnection('mysql');
Это дает вам больше свободы, но ваш код запутывается, и я не рекомендую его.
Решение 3
Это также может усложнить понимание вашего кода. Вы можете включить имя базы данных в свои запросы, например, так:
DB::table('database1.posts as d1p')
->leftjoin('database2.users as d2u', 'd1p.user_id', '=', 'd2u.id');
Возможно, вы можете смешивать и сопоставлять это с помощью функций Eloquent Builder.