Zacznijmy więc od początku...
a na początku trzeba pobrać i wstępnie skonfigurować CI2. Potem zainstalować composera.
Posiadając już wykonane powyższe czynności należny utworzyć plik dla composera, o nazwie
composer.json , a w nim wpisać:
{
"require": {
"doctrine/orm": "*"
}
}
Tak przygotowany plik zapisujemy w głównej gałęzi projektu. I wywołujemy instalację naszego pliku.(Jeśli mamy integracje z menu kontekstowym, wystarczy kliknąć p.p.m na naszym pliku i wybrać opcje composer install).
Uwaga jeśli chcemy dodać więcej bibliotek to odzielamy je przecinkami np. tak:
{
"require": {
"facebook/php-sdk-v4" : "4.0.*",
"doctrine/orm": "*"
}
}
Jeśli natomiast mamy już jakieś biblioteki pobrane przez composera to wystarczy dokonać update.
I tak oto composer wygeneruje nam automatycznie klasę autoload, którą umieszczamy przed wywołaniem naszego CodeIgnitera. Więcej o tym pisałem tutaj.
Teraz zostało nam dodanie odpowiedniej klasy do folderu application/libraries/.
Tworzymy więc nowy plik Doctrine.php i wpisujemy w nim:
<?php
use Doctrine\ORM\Tools\Setup;
use Doctrine\ORM\EntityManager;
use Doctrine\Common\ClassLoader;
class Doctrine {
public $em;
public function __construct() {
$isDevMode = false;
// the connection configuration
$dbParams = array(
'driver' => 'pdo_mysql',
'user' => 'root',
'password' => '',
'dbname' => 'politycznik',
);
$models_namespace = 'Entity';
$models_path = APPPATH . 'models';
$proxies_dir = APPPATH . 'models/Proxies';
$metadata_paths = array(APPPATH . 'models');
$config = Setup::createAnnotationMetadataConfiguration($metadata_paths, $isDevMode, $proxies_dir);
$this->em = EntityManager::create($dbParams, $config);
$loader = new ClassLoader($models_namespace, $models_path);
$loader->register();
}
}
Teraz możemy używać Doctrine w naszym kontrolerze czy modelu w taki sposób:
public function add_user() {
$this->load->library('doctrine');
$em = $this->doctrine->em;
$user = new Entity\User;
$user->setImie('Joseph');
$user->setNazwisko('Wolfgang');
$user->setEmail('josephatwildlyinaccuratedotcom');
$em->persist($user);
$em->flush();
$data = array(
'STATUS' => 'OK'
);
$this->load->view('valid', $data);
}