managing-connections.txt 1.63 KB
Newer Older
jepso's avatar
jepso committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
From the start Doctrine has been designed to work with multiple connections. Unless separately specified Doctrine always uses the current connection for executing the queries. The following example uses {{openConnection()}} second argument as an optional connection alias.

<code type="php">
// Doctrine_Manager controls all the connections

$manager = Doctrine_Manager::getInstance();

// open first connection
 
$conn = $manager->openConnection(new PDO('dsn','username','password'), 'connection 1');
</code>

For convenience {{Doctrine_Manager}} provides static method {{connection()}} which opens new connection when arguments are given to it and returns the current connection when no arguments have been speficied.

<code type="php">
// open first connection
 
$conn = Doctrine_Manager::connection(new PDO('dsn','username','password'), 'connection 1');

$conn2 = Doctrine_Manager::connection();

// $conn2 == $conn
</code>

The current connection is the lastly opened connection. 

<code type="php">
// open second connection

$conn2 = $manager->openConnection(new PDO('dsn2','username2','password2'), 'connection 2');

$manager->getCurrentConnection(); // $conn2
</code>

You can change the current connection by calling {{setCurrentConnection()}}. 

<code type="php">
$manager->setCurrentConnection('connection 1');

$manager->getCurrentConnection(); // $conn
</code>

You can iterate over the opened connection by simple passing the manager object to foreach clause. This is possible since {{Doctrine_Manager}} implements special {{IteratorAggregate}} interface.

<code type="php">
// iterating through connections

foreach($manager as $conn) {

}
</code>