PHP Class Doctrine\DBAL\Connections\MasterSlaveConnection
Connection can be used with master-slave setups.
Important for the understanding of this connection should be how and when
it picks the slave or master.
1. Slave if master was never picked before and ONLY if 'getWrappedConnection'
or 'executeQuery' is used.
2. Master picked when 'exec', 'executeUpdate', 'insert', 'delete', 'update', 'createSavepoint',
'releaseSavepoint', 'beginTransaction', 'rollback', 'commit', 'query' or
'prepare' is called.
3. If master was picked once during the lifetime of the connection it will always get picked afterwards.
4. One slave connection is randomly picked ONCE during a request.
ATTENTION: You can write to the slave with this connection if you execute a write query without
opening up a transaction. For example:
$conn = DriverManager::getConnection(...);
$conn->executeQuery("DELETE FROM table");
Be aware that Connection#executeQuery is a method specifically for READ
operations only.
This connection is limited to slave operations using the
Connection#executeQuery operation only, because it wouldn't be compatible
with the ORM or SchemaManager code otherwise. Both use all the other
operations in a context where writes could happen to a slave, which makes
this restricted approach necessary.
You can manually connect to the master at any time by calling:
$conn->connect('master');
Instantiation through the DriverManager looks like:
Show file
Open project: doctrine/dbal
Class Usage Examples
Protected Properties
Property |
Type |
Description |
|
$connections |
Doctrine\DBAL\Driver\Connection[] |
Master and slave connection (one of the randomly picked slaves). |
|
$keepSlave |
boolean |
You can keep the slave connection and then switch back to it
during the request if you know what you are doing. |
|
Public Methods
Method |
Description |
|
__construct ( array $params, Doctrine\DBAL\Driver $driver, Doctrine\DBAL\Configuration $config = null, Doctrine\Common\EventManager $eventManager = null ) |
Creates Master Slave Connection. |
|
beginTransaction ( ) |
{@inheritDoc} |
|
close ( ) |
{@inheritDoc} |
|
commit ( ) |
{@inheritDoc} |
|
connect ( $connectionName = null ) |
{@inheritDoc} |
|
createSavepoint ( $savepoint ) |
{@inheritDoc} |
|
delete ( $tableName, array $identifier, array $types = [] ) |
{@inheritDoc} |
|
exec ( $statement ) |
{@inheritDoc} |
|
executeUpdate ( $query, array $params = [], array $types = [] ) |
{@inheritDoc} |
|
insert ( $tableName, array $data, array $types = [] ) |
{@inheritDoc} |
|
isConnectedToMaster ( ) : boolean |
Checks if the connection is currently towards the master or not. |
|
prepare ( $statement ) |
{@inheritDoc} |
|
query ( ) |
{@inheritDoc} |
|
releaseSavepoint ( $savepoint ) |
{@inheritDoc} |
|
rollBack ( ) |
{@inheritDoc} |
|
rollbackSavepoint ( $savepoint ) |
{@inheritDoc} |
|
update ( $tableName, array $data, array $identifier, array $types = [] ) |
{@inheritDoc} |
|
Protected Methods
Method Details
__construct()
public method
Creates Master Slave Connection.
public __construct ( array $params, Doctrine\DBAL\Driver $driver, Doctrine\DBAL\Configuration $config = null, Doctrine\Common\EventManager $eventManager = null ) |
$params |
array |
|
$driver |
Doctrine\DBAL\Driver |
|
$config |
Doctrine\DBAL\Configuration |
|
$eventManager |
Doctrine\Common\EventManager |
|
beginTransaction()
public method
chooseConnectionConfiguration()
protected method
public connect ( $connectionName = null ) |
connectTo()
protected method
Connects to a specific connection.
protected connectTo ( string $connectionName ) : Doctrine\DBAL\Driver |
$connectionName |
string |
|
return |
Doctrine\DBAL\Driver |
|
createSavepoint()
public method
public exec ( $statement ) |
executeUpdate()
public method
isConnectedToMaster()
public method
Checks if the connection is currently towards the master or not.
releaseSavepoint()
public method
rollbackSavepoint()
public method
Property Details
$connections protected property
Master and slave connection (one of the randomly picked slaves).
protected Connection[],Doctrine\DBAL\Driver $connections |
return |
Doctrine\DBAL\Driver\Connection[] |
|
$keepSlave protected property
You can keep the slave connection and then switch back to it
during the request if you know what you are doing.
protected bool $keepSlave |
return |
boolean |
|