Блог Мазепина Василия

Пишу о том, что кажется интересным

Первоначальное подключение ORM Doctrine

2015-02-28 01:05 | Комментарии

Доброго времени суток, коллеги и гости…

В этом посте хочу рассказать Вам о подключении ORM Doctrine к Вашему веб-ресурсу. Для начала нам понадобится composer. Установить вы его можете на оф.сайте.
После этого в корне проекта нам надо прописать:

1
2
3
4
5
6
{
  "require":
    {
    "doctrine/orm": "2.4.*"
    }
  }

Соответственно после этого загрузить этот вендор в проект:
composer install
После этого необходимо создать файл-загрузчик, который позволит нам работать с Doctrine:

bootstrap.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
use Doctrine\ORM\Tools\Setup;
use Doctrine\ORM\EntityManager;
require_once __DIR__ . "/vendor/autoload.php";
$isDevMode = true;
// Настройки будут браться из аннотаций, на мой взгляд, это удобнее
// Заметьте, что здесь я передаю путь до каталога, который будет содержать в себе классы сущностей, проецируемые на БД
$config = Setup::createAnnotationMetadataConfiguration(array(__DIR__."/lib/Doctrine/"), $isDevMode);

$parameters;//Здесь вам надо вытащить настройки подключения к БД для вашего проекта
//Здесь вам надо вытащить настройки подключения к БД для вашего проекта
$dbParams = array(
  'driver'   => $parameters['driver'],
  'user'     => $parameters['user'],
  'password' => $parameters['password'],
  'dbname'   => $parameters['dbname'],
);
$entityManager = EntityManager::create($dbParams, $config);

После это мне было бы удобно генерировать структуру бд через консоль. Следуя документации, создаю в корне проекта:

cli-config.php
1
2
3
<?php
require_once __DIR__ . "/bootstrap.php";
return \Doctrine\ORM\Tools\Console\ConsoleRunner::createHelperSet($entityManager);

После этого я могу обновлять структуру БД, создавая классы сущностей в каталоге “/lib/Doctrine/”
Например:

Product.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?php
/**
 * @Entity @Table(name="food")
 **/
class Product
{
  /** @Id @Column(type="integer") @GeneratedValue **/
  protected $id;
  /** @Column(type="string") **/
  protected $name;

  /**
  * @return mixed
  */
  public function getName()
  {
      return $this->name;
  }

  /**
  * @param mixed $name
  */
  public function setName($name)
  {
      $this->name = $name;
  }

  /**
  * @return mixed
  */
  public function getId()
  {
      return $this->id;
  }
  

    public function setId($id)
    {
        $this->id = $id;
    }

}

В нашем случае после выполнения команды vendor/bin/doctrine orm:schema-tool:create в БД создастся таблица с полями, указанными с помощью аннотаций.
Это первоначальная настройка, в следующих постах я распишу как осуществить запись в БД с помощью этого фреймворка. Надеюсь, эта статья будет кому то полезной.

Комментарии