2009-02-17 05:43:40 +03:00
## Installing
2009-02-17 04:54:11 +03:00
2009-02-17 05:43:40 +03:00
Currently the only way to install is via svn. So just checkout the trunk.
$ svn co http://svn.doctrine-project.org/trunk/lib doctrine
$ cd doctrine
## Loading Doctrine
First we need to require one class, the `ClassLoader`.
>**NOTE**
> This assumes you've created some kind of script to test the following code in. Something like a `test.php` file.
[php]
// test.php
require_once 'lib/Doctrine/Common/ClassLoader.php';
Now we need to instantiate the `ClassLoader` and register it:
[php]
$classLoader = new \Doctrine\Common\ClassLoader();
$classLoader->register();
The Doctrine `ClassLoader` supports the ability to use it for loading other classes with a prefix.
Here are the recommend usages for the Doctrine `ClassLoader`:
* Use only 1 class loader instance.
* Set the base paths to your class libraries (including Doctrine's) through
-
[php]
$classLoader->setBasePath($prefix, $basePath);
For example you can set the path for Doctrine with the following:
[php]
$classLoader->setBasePath('Doctrine', '/usr/local/phplibs/doctrine/lib');
Then, when trying to load the class Doctrine\ORM\EntityManager, for example the class loader will look for /usr/local/phplibs/doctrine/lib/Doctrine/ORM/EntityManager.php
* DO NOT setCheckFileExists(true). Doing so is expensive in terms of performance.
* Use an opcode-cache (i.e. APC) (STRONGLY RECOMMENDED).
## Initialize Doctrine
[php]
$config = new \Doctrine\ORM\Configuration();
$config->setMetadataCacheImpl(new \Doctrine\ORM\Cache\ArrayCache);
$eventManager = new \Doctrine\Common\EventManager();
$connectionOptions = array(
2009-02-17 11:01:34 +03:00
'driver' => 'pdo_sqlite',
'path' => 'database.sqlite'
2009-02-17 05:43:40 +03:00
);
$em = \Doctrine\ORM\EntityManager::create($connectionOptions, 'doctrine', $config, $eventManager);
## Getting the Connection
[php]
$conn = $em->getConnection();
$conn->delete('table_name', array(1, 3, 10));
The DBAL Connection class has lots of useful functions. You can browse the code and check the API to get familiar.
## The Schema Manager
The schema manager is a nice API for issuing database DDL statements like creating a table, or dropping a table.
[php]
$sm = $connection->getSchemaManager();
The schema manager allows you to do all the familiar options on your schema. Like `createTable()`. Below you will find an example:
[php]
$sm->createTable($tableName, $columns, $options);
## The Platform Object
The platform object is the object that provides the appropriate SQL to the schema manager for the DDL statements.
[php]
$platform = $connection->getDatabasePlatform();
Now we can get the generated SQL instead of executing it directly:
[php]
$sql = $platform->getCreateTableSql($tableName, $columns, $options);