Drupal is a registered trademark of Dries Buytaert
drupal 11.3.7 Update released for Drupal core (11.3.7)! drupal 11.2.11 Update released for Drupal core (11.2.11)! drupal 10.6.7 Update released for Drupal core (10.6.7)! drupal 10.5.9 Update released for Drupal core (10.5.9)! cms 2.1.1 Update released for Drupal core (2.1.1)! drupal 11.3.6 Update released for Drupal core (11.3.6)! drupal 10.6.6 Update released for Drupal core (10.6.6)! cms 2.1.0 Update released for Drupal core (2.1.0)! bootstrap 8.x-3.40 Minor update available for theme bootstrap (8.x-3.40). menu_link_attributes 8.x-1.7 Minor update available for module menu_link_attributes (8.x-1.7). eca 3.1.1 Minor update available for module eca (3.1.1). layout_paragraphs 2.1.3 Minor update available for module layout_paragraphs (2.1.3). ai 1.3.3 Minor update available for module ai (1.3.3). ai 1.2.14 Minor update available for module ai (1.2.14). node_revision_delete 2.0.3 Minor update available for module node_revision_delete (2.0.3). moderated_content_bulk_publish 2.0.52 Minor update available for module moderated_content_bulk_publish (2.0.52). klaro 3.0.10 Minor update available for module klaro (3.0.10). klaro 3.0.9 Minor update available for module klaro (3.0.9). layout_paragraphs 2.1.2 Minor update available for module layout_paragraphs (2.1.2). geofield_map 11.1.8 Minor update available for module geofield_map (11.1.8).

dbal

1,669 sites Security covered
View on drupal.org

About

If you are using a composer library that needs a DBAL connection, this module provides a factory service that lets you inject that into your services.

e.g.


namespace Hooha\Whizzy;

use Doctrine\DBAL\Connection;

/**
 * Provides just enough fizzwang and not a scrap more.
 */
class Fizzwang {

  /**
   * DBAL connection.
   *
   * @var \Doctrine\DBAL\Connection
   */
  protected $connection;

  /**
   * Creates a new Fizzwang object.
   *
   * @param \Doctrine\DBAL\Connection $connection
   *   A DBAL connection.
   */
  public function __construct(Connection $connection) {
     $this->connection = $connection;
  }
  // ...
}

Then you can achieve this by using the @dbal_connection service in your services.yml file.

services:
  hooha.fizzwang:
    class: \Hooha\Whizzy\Fizzwang
    arguments: ['@dbal_connection']

To connect to other than the default database, define your own service like so (connects to $databases['migrate']:

services:
  dbal_connection.migrate:
    factory: dbal_connection_factory:get
    arguments: ['migrate']

Known issues

Please note that table-prefixing isn't supported by DBAL, so you will need to make sure that your tests only write to the prefixed table ($this->getDatabasePrefix()) and not the base installation.
Please use the issue queue to report any problems.

Installation

You must use composer to install this module
composer require "drupal/dbal"

Activity

Total releases
1
First release
Nov 2025
Latest release
5 months ago
Release cadence
Stability
100% stable

Releases

Version Type Release date
2.0.3 Stable Nov 13, 2025