Здравствуй уважаемый %username%!


На тему интеграции данного фреймворка уже написана не одна статья, есть информация в вики (раз и два), но всё-таки я решился написать этот текст потому что все представленные выше способы не отличались элегантностью


Итак начнём. Если Doctrine уже установлен, то данный пункт можно пропустить. Нам понадобится pear:
yum install pear

После установки запускаем установку Doctrine как pear-расширения:
pear channel-discover pear.phpdoctrine.org
pear install pear.phpdoctrine.org/Doctrine-1.1.5.tgz

В Fedora 10 он установится в /usr/share/pear/Doctrine — запомним этот момент, он нам понадобится при настройке Codeigniter'а. И переходим к настройке Codeigniter'а. Взаимодействовать с Doctrine у нас будет плагин, назовём его, например doctrine_pi.php:
<?php
// system/application/plugins/doctrine_pi.php

// Загружаем библиотеку Doctrine.
require_once '/usr/share/pear/Doctrine/lib/Doctrine.php';

// Загружаем настройки базы/баз данных
require_once APPPATH.'/config/database.php';

// Позволяем нашим моделям самозагрузку
spl_autoload_register(array('Doctrine', 'autoload'));

// тут мы загружаем наши соединения в Doctrine_Manager
// этот пункт позволятет нам подключаться к нескольким базам данных одновременно
foreach ($db as $connection_name => $db_values) {

// сначала сконвертируем наши настройки в dsn. Нужно сверится с названием драйвера потому как в CI и в // Doctrine они могут называться по разному. При необходимости редактируем config/database.php
$dsn = $db[$connection_name]['dbdriver'] .
'://' . $db[$connection_name]['username'] .
':' . $db[$connection_name]['password'].
'@' . $db[$connection_name]['hostname'] .
'/' . $db[$connection_name]['database'];

Doctrine_Manager::connection($dsn,$connection_name);
}

// А теперь можно загрузить класс модели Codeigniter'а
require_once BASEPATH.'/libraries/Model.php';

// Говорим doctrine где находятся наши ммодели
Doctrine::loadModels(APPPATH.'/models');

Теперь осталось поставить этот плагин в автозагрузку /config/autoload.php
// Отключаем загрузку стандартной билиотеку DB
$autoload['libraries'] = array();

// Включаем загрузку плагина Doctrine
$autoload['plugin'] = array('doctrine');


Вот собственно и всё, можно использовать всю мощь этой связки.