• PostgreSQL (Постгресс) и Yii: полное руководство по подключению и работе с базой данных
    Хотите заказать услугу прямо сейчас?

    PostgreSQL (Постгресс) и Yii: полное руководство по подключению и работе с базой данных

    Фреймворк Yii и база данных PostgreSQL (Постгресс) — отличное сочетание для создания производительных и безопасных веб-приложений. В этой статье мы рассмотрим, как подключить PostgreSQL (Постгресс) к Yii, работать с Active Record, использовать чистые SQL-запросы и управлять транзакциями.


    1. Зачем использовать PostgreSQL (Постгресс) с Yii

    PostgreSQL (Постгресс) — мощная реляционная база данных с поддержкой транзакций, JSON, массивов и сложных индексов. Yii позволяет удобно работать с базой через Active Record и Query Builder. Вместе они дают:

    • Простую работу с таблицами через модели Yii
    • Безопасные SQL-запросы с защитой от инъекций
    • Возможность использовать уникальные функции PostgreSQL (Постгресс), включая JSON и массивы
    • Удобное управление схемой через миграции Yii

    2. Подключение PostgreSQL (Постгресс) в Yii

    В Yii конфигурация подключения находится в файле config/db.php:

     'yii\db\Connection',
        'dsn' => 'pgsql:host=localhost;port=5432;dbname=mydatabase',
        'username' => 'postgres',
        'password' => 'mypassword',
        'charset' => 'utf8',
    ];
    ?>
    

    После этого Yii сможет работать с базой данных PostgreSQL (Постгресс) через Active Record и чистые SQL-запросы.


    3. Модели Active Record для PostgreSQL (Постгресс)

    Пример модели для таблицы users:

    
    

    Примеры работы с моделью:

    $user = new User();
    $user->name = 'Иван';
    $user->email = 'ivan@example.com';
    $user->save();
    
    // Получение пользователей
    $users = User::find()->where(['active' => 1])->all();
    

    4. Чистые SQL-запросы к PostgreSQL (Постгресс)

    4.1. Простая выборка

    $rows = Yii::$app->db->createCommand('SELECT * FROM users WHERE active = :active')
        ->bindValue(':active', 1)
        ->queryAll();
    

    4.2. Запрос с JSON-полем

    $products = Yii::$app->db->createCommand("
        SELECT * 
        FROM products 
        WHERE data->>'category' = :category
    ")
    ->bindValue(':category', 'electronics')
    ->queryAll();
    

    4.3. Вставка данных

    Yii::$app->db->createCommand("
        INSERT INTO orders (user_id, total, created_at) 
        VALUES (:user_id, :total, NOW())
    ")
    ->bindValues([':user_id' => 123, ':total' => 1500])
    ->execute();
    

    4.4. Транзакции с SQL

    $transaction = Yii::$app->db->beginTransaction();
    try {
        Yii::$app->db->createCommand("
            UPDATE users SET balance = balance - :amount WHERE id = :id
        ")->bindValues([':amount' => 500, ':id' => 123])->execute();
    
        Yii::$app->db->createCommand("
            INSERT INTO transactions (user_id, amount, created_at) 
            VALUES (:id, :amount, NOW())
        ")->bindValues([':id' => 123, ':amount' => 500])->execute();
    
        $transaction->commit();
    } catch (\Exception $e) {
        $transaction->rollBack();
        throw $e;
    }
    

    5. Миграции и управление схемой PostgreSQL (Постгресс)

    Создание таблицы users через миграцию Yii:

    createTable('users', [
                'id' => $this->primaryKey(),
                'name' => $this->string()->notNull(),
                'email' => $this->string()->notNull()->unique(),
                'created_at' => $this->timestamp()->defaultExpression('CURRENT_TIMESTAMP')
            ]);
        }
    
        public function safeDown()
        {
            $this->dropTable('users');
        }
    }
    ?>
    

    6. Рекомендации и лучшие практики

    • Использовать Active Record для стандартных операций и чистые SQL-запросы для сложных задач PostgreSQL (Постгресс)
    • Применять подготовленные выражения для защиты от SQL-инъекций
    • Регулярно делать резервное копирование базы
    • Использовать индексы и оптимизировать запросы
    • Следить за обновлениями Yii и PostgreSQL (Постгресс)

    7. FAQ — Часто задаваемые вопросы

    1. Можно ли использовать Yii с другими СУБД?
    Да, Yii поддерживает MySQL, MariaDB, SQLite, SQL Server и PostgreSQL (Постгресс).

    2. Нужно ли включать расширение PDO_PGSQL?
    Да, убедитесь, что на сервере установлено расширение PDO_PGSQL для работы с PostgreSQL (Постгресс).

    3. Как работать с JSON-полями в PostgreSQL (Постгресс) через Yii?
    Используйте нативные функции PostgreSQL и Query Builder Yii. Например, data->>’category’ позволяет фильтровать по JSON-полю.

    4. Можно ли использовать транзакции?
    Да, Yii поддерживает транзакции PostgreSQL (Постгресс) через метод beginTransaction().

    5. В чем преимущество использования PostgreSQL (Постгресс) с Yii?
    Сочетание даёт безопасность, производительность, удобство работы с Active Record и мощные возможности SQL Postgres.

    Вам может быть интересным

    Восстановление сайта на Yii после взлома: пошаговое руководство

    Посмотреть

    Создание платформы дистанционного обучения на Yii — полное руководство

    Посмотреть

    📰 Последние статьи

    Как защищают приложения в 2026: угрозы, архитектура и реальная безопасность

    Читать

    Я вообще хороший программист или просто умею гуглить?

    Читать

    Какие книги читать программисту с нуля — дружеский обзор без скучной теории

    Читать

    🤖 Заменит ли ИИ программистов: полный разбор будущего профессии

    Читать

    🔐 Почему компании переходят на Zero Trust: новая модель безопасности в 2026 году

    Читать

    GitHub Copilot и “код из чужих проектов” — в чём скандал

    Читать

    🚀 Можно ли написать сайт за 1 день: честный разбор с примерами

    Читать

    «Не заставляйте меня думать» — Стив Круг: разбор книги, идеи и честная критика

    Читать

    ИИ для программистов 1С: как искусственный интеллект меняет разработку в 1С

    Читать

    Что будет, если отключат интернет: полный разбор последствий

    Читать

    Разговор о взломе ВК и безопасности аккаунтов

    Читать

    ИИ для программистов: как искусственный интеллект меняет разработку в 2026 году

    Читать

    🚨 Почему ломается сайт: полный разбор с примерами кода

    Читать

    Дорама «Милашка-программист» — честный разбор от программиста

    Читать

    Жаргон программистов: как они разговаривают и почему это звучит как заклинания

    Читать

    Почему одни разработчики зарабатывают $100, а другие $10 000

    Читать

    1С-Битрикс снова подорожал: рынок это воспринял гораздо болезненнее, чем кажется

    Читать

    Киберпреступность в 2026: как устроена теневая цифровая экономика

    Читать

    Чёрный список работодателей — почему программисты закрывают на него глаза в 2026 году

    Читать

    Что сдавать на программиста после 9 класса в 2026 году

    Читать

    Почему становятся программистами 💻

    Читать

    Почему даже senior-разработчики иногда боятся обновлять Bitrix

    Читать

    Комментарии (0)

    Оставить комментарий

    Кейсы компании

    Кейс: создание кастомной корзины на 1С‑Битрикс с лицензией «Стандарт»

    Посмотреть

    Кастомная система комментариев WordPress с микроразметкой и AJAX

    Посмотреть

    Как создать компонент в Битрикс 1С, который изменяет цену на китайские юани

    Посмотреть

    🎯 Кейс Павлов Студио: как мы внедрили Яндекс SmartCaptcha для защиты всех форм сайта (включая Bitrix)

    Посмотреть

    Разработка онлайн-калькулятора для товаров на сайте wp

    Посмотреть

    Обновление сайта с битрикс 1с с версии php 5.6 до 8.2

    Посмотреть

    Разработка сервиса для сбора информации из соц.сети «Вконтате»

    Посмотреть

    Разработка мега-меню для сайта на wordpress https://doma-penoblok.ru/

    Посмотреть

    Разработка и сопровождение сайта  https://aaa-sitrak.ru/ с последующей интеграцией на 1с-битрикс

    Посмотреть

    Разработка интернет-магазина https://sklad38.ru/ на битрикс 1с

    Посмотреть

    Доработка сайта https://tochka-kontakta.ru/ для организации «Точка Контакта»

    Добро пожаловать в WordPress. Это ваша первая запись. Отредактируйте или удалите ее, затем начинайте создавать!

    Посмотреть
    Max Messenger