Вы читаете предварительную версию v0.1. API могут измениться.
~ 1 мин чтенияОбновлено 2026-10-29

База данных

Elang использует Doctrine DBAL для подключений к базам данных и построения запросов. Это слой абстракции базы данных, а не ORM.

Настройка подключения

По умолчанию используется SQLite с файлом database/database.sqlite. Для MySQL:

DATABASE_URL="mysql://user:password@127.0.0.1:3306/my_app?charset=utf8mb4"

Для PostgreSQL используйте URL с postgresql:// и установите pdo_pgsql. Кодируйте специальные символы в учётных данных в формате URL. Никогда не добавляйте секреты подключения в систему контроля версий.

Запрос записей

use Elang\Database\Database;

$rows = $database->table('posts')
    ->where('published = :published')
    ->setParameter('published', 1)
    ->orderBy('id', 'DESC')
    ->setMaxResults(10)
    ->fetchAllAssociative();

Database::table() проверяет идентификатор таблицы и возвращает построитель запросов Doctrine. Привязывайте пользовательские значения с помощью параметров. Имена столбцов, SQL-выражения и направления сортировки не становятся безопасными автоматически; выбирайте их из разрешённых списков, контролируемых приложением.

Запись данных

$database->connection()->insert('posts', [
    'title' => $validated['title'],
    'published' => 0,
]);

DBAL предоставляет операции вставки, обновления и удаления, подготовленные выражения и API для работы со схемой.

Транзакции

$database->transaction(function ($connection) {
    $connection->insert('posts', ['title' => 'Hello', 'published' => 0]);
});

Исключение откатывает транзакцию. Поведение DDL различается между базами данных; проверяйте операции миграции перед развёртыванием.

Нужна помощь?

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

Поиск по документации Elang

Начните вводить, чтобы найти следующий шаг.