Make a CodeIgniter library that is both a wrapper and a bootstrap for Doctrine 2.
++ Setting up the file structure
Here are the steps:
* Add a php file to your system/application/libraries folder called Doctrine.php. This is going to be your wrapper/bootstrap for the D2 entity manager.
* Put the Doctrine folder (the one that contains Common, DBAL, and ORM) inside that same libraries folder.
* Your system/application/libraries folder now looks like this:
system/applications/libraries
-Doctrine
-Doctrine.php
-index.html
* If you want, open your config/autoload.php file and autoload your Doctrine library.
[php]
$autoload['libraries'] = array('doctrine');
++ Creating your Doctrine CodeIgniter library
Now, here is what your Doctrine.php file should look like. Customize it to your needs.
[php]
use Doctrine\Common\ClassLoader,
Doctrine\ORM\Configuration,
Doctrine\ORM\EntityManager,
Doctrine\Common\Cache\ArrayCache,
Doctrine\DBAL\Logging\EchoSqlLogger;
class Doctrine {
public $em = null;
public function __construct()
{
// load database configuration from CodeIgniter
require_once APPPATH.'config/database.php';
// Set up class loading. You could use different autoloaders, provided by your favorite framework,
Please note that this is a development configuration; for a production system you'll want to use a real caching system like APC, get rid of EchoSqlLogger, and turn off autoGenerateProxyClasses.
For more details, consult the [Doctrine 2 Configuration documentation](http://www.doctrine-project.org/documentation/manual/2_0/en/configuration#configuration-options).
++ Now to use it
Whenever you need a reference to the entity manager inside one of your controllers, views, or models you can do this:
[php]
$em = $this->doctrine->em;
That's all there is to it. Once you get the reference to your EntityManager do your Doctrine 2.0 voodoo as normal.
Note: If you do not choose to autoload the Doctrine library, you will need to put this line before you get a reference to it: