Это не решит ваш вопрос точно, но если нет законной причины хранить вещи в отдельных базах данных, я бы на самом деле старался этого не делать.Вы можете использовать глобальные области видимости и tenant_ids, чтобы ограничить то, что видят пользователи.
В вашей пользовательской модели вы добавите столбец tenant_id
, а затем во всех ваших моделях используйте глобальную область действия:
class TenantScope implements Scope
{
public function apply(Builder $builder, Model $model)
{
$builder->where('tenant_id', \Auth::user()->tenant_id);
}
}
class Widget extends Model {
protected static function boot()
{
parent::boot();
static::addGlobalScope(new TenantScope);
}
}
Таким образом, когда пользователь получит доступ к модели, он получит толькоте, которые назначены им.Есть много головных болей, связанных с поддержкой отдельных баз данных (миграция, отсутствие возможности делать глобальные запросы и т. Д.), Поэтому, если вы можете избежать этого, вам следует.
Вот еще один вопрос об изменении соединений на лету, который может помочь, если выmust: Laravel Изменить соединение динамически