Що таке ORM?
В мові програмування PHP використовується багато різних ORM (Object-Relational Mapping) бібліотек для взаємодії з базами даних. Найпопулярнішими є Doctrine, Eloquent (Laravel), Propel та інші. У цій статті ми розглянемо приклад використання ORM бібліотеки Doctrine для створення та взаємодії з базою даних.
Що таке ORM?
ORM (Object-Relational Mapping) - це технологія програмування, яка дозволяє розробникам працювати з базами даних за допомогою об’єктно-орієнтованих принципів. ORM мапує класи до таблиць у базі даних, а об’єкти класів до рядків у цих таблицях. Це полегшує процес розробки, дозволяючи уникнути написання великої кількості SQL-запитів вручну.
Налаштування Doctrine ORM
- Встановлення Doctrine: Для встановлення Doctrine використовуємо Composer.
composer require doctrine/orm
- Налаштування 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-додатки.