public function tearDown() { $this->beforeApplicationDestroyed(function () { DB::disconnect(); }); parent::tearDown(); }
/** * Sets the connection's database to the current user database * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { // Get the current authenticated user $user = Auth::user(); // Close any connection made before to avoid conflicts DB::disconnect('tenantdb'); // Set the connection's database to the user's own database Config::set('database.connections.tenantdb.database', storage_path() . '/' . $user->database); return $next($request); }
/** * Create a new user instance after a valid registration. * * @param array $data * @return User */ public function create(array $data) { $user = User::create(['name' => $data['name'], 'email' => $data['email'], 'database' => $data['name'] . '.sqlite', 'password' => bcrypt($data['password'])]); // Create the new user sqlite database Storage::put($user->database, ''); // Close any connection made with tenantdb DB::disconnect('tenantdb'); // Set the tenant connection to the users own database Config::set('database.connections.tenantdb.database', storage_path() . '/' . $user->database); // Run migrations for the new db Artisan::call('migrate', ['--database' => 'tenantdb', '--path' => 'database/migrations/tenant']); return $user; }
/** * Obtiene las obras de un usuario cadeco de todas las bases de datos definidas * * @param $idUsuario * @return Collection|Obra */ public function getObras($idUsuario) { $obrasUsuario = new Collection(); $basesDatos = BaseDatosCadeco::where('activa', true)->orderBy('nombre')->get(); foreach ($basesDatos as $bd) { $this->config->set('database.connections.cadeco.database', $bd->nombre); $usuarioCadeco = $this->getUsuarioCadeco($idUsuario); $obras = $this->getObrasUsuario($usuarioCadeco); foreach ($obras as $obra) { $obra->databaseName = $bd->nombre; $obrasUsuario->push($obra); } DB::disconnect('cadeco'); } $perPage = 10; $currentPage = Paginator::resolveCurrentPage(); $currentPage = $currentPage ? $currentPage : 1; $offset = $currentPage * $perPage - $perPage; $paginator = new LengthAwarePaginator($obrasUsuario->slice($offset, $perPage), $obrasUsuario->count(), $perPage); return $paginator; }
public function disconnect($site_id) { DB::disconnect($site_id . '_production'); }