++++ Introduction Doctrine_Connection is a wrapper for database connection. It handles several things: * Handles database portability things missing from PDO (eg. {{LIMIT}} / {{OFFSET}} emulation) * Keeps track of {{Doctrine_Table}} objects * Keeps track of records * Keeps track of records that need to be updated / inserted / deleted * Handles transactions and transaction nesting * Handles the actual querying of the database in the case of {{INSERT}} / {{UPDATE}} / {{DELETE}} operations * Can query the database using the DQL API (see {{Doctrine_Query}}) * Optionally validates transactions using {{Doctrine_Validator}} and gives full information of possible errors. ++++ Available drivers Doctrine has drivers for every PDO-supported database. The supported databases are: * FreeTDS / Microsoft SQL Server / Sybase * Firebird/Interbase 6 * Informix * Mysql * Oracle * Odbc * PostgreSQL * Sqlite ++++ Getting a table object In order to get table object for specified record just call {{Doctrine_Record::getTable()}} or {{Doctrine_Connection::getTable()}}. $manager = Doctrine_Manager::getInstance(); // open new connection $conn = $manager->openConnection(new PDO('dsn','username','password')); // getting a table object $table = $conn->getTable('User'); ++++ Flushing the connection Creating new record (database row) is very easy. You can either use the {{Doctrine_Connection::create()}} or {{Doctrine_Table::create()}} method to do this or just simply use the new operator. $user = new User(); $user->name = 'Jack'; $group = $conn->create('Group'); $group->name = 'Drinking Club'; // saves all the changed objects into database $conn->flush(); ++++ Querying the database {{Doctrine_Connection::query()}} is a simple method for efficient object retrieval. It takes one parameter (DQL query) and optionally prepared statement params. // select all users $users = $conn->query('FROM User'); // select all users where user email is jackdaniels@drinkmore.info $users = $conn->query("FROM User WHERE User.Email.address = 'jackdaniels@drinkmore.info'"); // using prepared statements $users = $conn->query('FROM User WHERE User.name = ?', array('Jack')); ++++ Getting connection state Connection state gives you information about how active connection currently is. You can get the current state by calling {{Doctrine_Connection::getState()}}. switch($conn->getState()): case Doctrine_Connection::STATE_ACTIVE: // connection open and zero open transactions break; case Doctrine_Connection::STATE_ACTIVE: // one open transaction break; case Doctrine_Connection::STATE_BUSY: // multiple open transactions break; case Doctrine_Connection::STATE_CLOSED: // connection closed break; endswitch;