logo

Що таке ORM?

В мові програмування PHP використовується багато різних ORM (Object-Relational Mapping) бібліотек для взаємодії з базами даних. Найпопулярнішими є Doctrine, Eloquent (Laravel), Propel та інші. У цій статті ми розглянемо приклад використання ORM бібліотеки Doctrine для створення та взаємодії з базою даних.

Що таке ORM?

ORM (Object-Relational Mapping) - це технологія програмування, яка дозволяє розробникам працювати з базами даних за допомогою об’єктно-орієнтованих принципів. ORM мапує класи до таблиць у базі даних, а об’єкти класів до рядків у цих таблицях. Це полегшує процес розробки, дозволяючи уникнути написання великої кількості SQL-запитів вручну.

Налаштування Doctrine ORM

  1. Встановлення Doctrine: Для встановлення Doctrine використовуємо Composer.
composer require doctrine/orm
  1. Налаштування EntityManager: Створюємо файл bootstrap.php, який налаштовує підключення до бази даних і налаштовує EntityManager.
// bootstrap.php

use Doctrine\ORM\Tools\Setup;

use Doctrine\ORM\EntityManager;

require_once "vendor/autoload.php";

$paths = [__DIR__ . '/src'];
$isDevMode = true;

// Налаштування підключення до бази даних
$dbParams = [
    'driver'   => 'pdo_mysql',
    'user'     => 'root',
    'password' => 'password',
    'dbname'   => 'mydb',
];

$config = Setup::createAnnotationMetadataConfiguration($paths, $isDevMode);
$entityManager = EntityManager::create($dbParams, $config);

Створення Entity

Entity у Doctrine — це класи, які мапуються на таблиці у базі даних. Створимо приклад Entity для користувачів.

// src/User.php

use Doctrine\ORM\Mapping as ORM;

class User
{
   private $id;
   private $name;
   private $email;

   // Геттери та сеттери

   public function getId()
   {
       return $this->id;
   }

   public function getName()
   {
       return $this->name;
   }

   public function setName($name)
   {
       $this->name = $name;
   }

   public function getEmail()
   {
       return $this->email;
   }

   public function setEmail($email)
   {
       $this->email = $email;
   }
}

Використання EntityManager

Після створення Entity ми можемо використовувати EntityManager для взаємодії з базою даних. Розглянемо приклади створення, збереження та отримання даних.

Створення нового користувача

\// create_user.php
require_once "bootstrap.php";

$newUserName = "John Doe";
$newUserEmail = "john.doe@example.com";

$user = new User();
$user->setName($newUserName);
$user->setEmail($newUserEmail);

$entityManager->persist($user);
$entityManager->flush();

echo "Created User with ID " . $user->getId() . "\n";

Отримання користувача за ID

// get_user.php

require_once "bootstrap.php";

$userId = $argv[1];
$user = $entityManager->find('User', $userId);

if ($user === null) {
    echo "User $userId does not exist.\n";
    exit(1);
}

echo sprintf("-%s\n%s\n", $user->getName(), $user->getEmail());

Doctrine ORM дозволяє значно спростити роботу з базами даних, використовуючи об’єктно-орієнтовані підходи. Ми розглянули основні кроки налаштування та використання Doctrine для створення Entity, взаємодії з базою даних та виконання основних операцій CRUD. Використовуючи ORM, ви зможете швидше та ефективніше розробляти ваші PHP-додатки.