90 lines
2.8 KiB
Plaintext
90 lines
2.8 KiB
Plaintext
## Installing
|
|
|
|
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(
|
|
'driver' => 'pdo_sqlite',
|
|
'path' => 'database.sqlite'
|
|
);
|
|
$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); |