PHPackages                             ova777/dao - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Database &amp; ORM](/categories/database)
4. /
5. ova777/dao

ActiveLibrary[Database &amp; ORM](/categories/database)

ova777/dao
==========

DAO like YII

v1.0.1(9y ago)127MITPHPPHP &gt;=5.3

Since Aug 18Pushed 9y ago1 watchersCompare

[ Source](https://github.com/ova777/dao)[ Packagist](https://packagist.org/packages/ova777/dao)[ Docs](http://github.com/ova777/dao)[ RSS](/packages/ova777-dao/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (3)Used By (0)

DAO
===

[](#dao)

Реализация Yii DAO без лишних зависимостей

### 1. Соединение с БД

[](#1-соединение-с-бд)

```
$db = new \ova777\DAO\Connection(
    'mysql:host=localhost;dbname=test', //DSN
    'user', //Login
    'pwd', //Password
    $options //PDO - параметры подключения (опционально)
);
```

### 2. Выполнение SQL-запросов

[](#2-выполнение-sql-запросов)

```
$cmd = $db->createCommand($sql); //Создаем новую команду
```

Варианты выполнения SQL-запроса:

```
$result = $cmd->execute(); //Выполнение любого запроса (возвращает bool)
$reader = $cmd->query(); //Выполнение запроса SELECT
$rows = $cmd->queryAll(); //Возвращает все строки результата запроса
$row = $cmd->queryRow(); //Возвращает первую строку результата запроса
$column = $cmd->queryColumn(); //Возвращает первый столбец результата запроса
$value = $cmd->queryScalar(); //Возвращает значение первого поля первой строки результата запроса
```

### 3. Обработка результатов запроса

[](#3-обработка-результатов-запроса)

Метод $cmd-&gt;query(); возвращает экземпляр класса Reader, результат можно получить следующими способами:

```
$reader = $cmd->query();
//Вариан 1
while(($row = $reader->read())!==false) { ... }
//Вариант 2
foreach($reader as $row) { ... }
//Вариант 3 - получение всех строк сразу
$rows = $reader->readAll();
```

### 4. Использование транзакций

[](#4-использование-транзакций)

```
$db->beginTransaction();
try {
	$db->createCommand($sql1)->execute();
	$db->createCommand($sql2)->execute();
	//...
	$db->commit();
} catch (Exception $e) {
	$db->rollback();
	echo 'Error: '.$e->getMessage();
}
```

### 5. Привязка параметров

[](#5-привязка-параметров)

```
//Создаем команду
$cmd = $db->createCommand('INSERT INTO table SET col=:col');
//Провязываем переменную $value к параметру :col
$cmd->bindParam(':col', $value, PDO::PARAM_STR);
//Вставляем строку
$value = 'foo';
$cmd->execute();
//Вставляем следующую строку с новыми значениями
$value = 'bar';
$cmd->execute();
```

### 6. Привязка значений

[](#6-привязка-значений)

Вместо привязки переменных к запросу, можно напрямую привязать значения

```
$cmd = $db->createCommand('SELECT * FROM table WHERE a=:a AND b=:b AND c=:c');
//Привязка одного значения
$cmd->bindValue(':a', 'A_VALUE', PDO::PARAM_STR);
//Привязка нескольких значений
$cmd->bindValues(array(':b'=>'B_VALUE', ':c'=>'C_VALUE'));
//Получаем результат
$rows = $cmd->queryAll();
```

### 7. Использование префиксов таблиц

[](#7-использование-префиксов-таблиц)

Для использования префиксов таблиц необходимо установить свойство Connection::tablePrefix. Затем в SQL-выражениях можно использовать {{tableName}} для имен таблиц.

```
$db->tablePrefix = "tbl_";
$rows = $db->createCommand('SELECT * FROM {{table}}')->queryAll();
//Название таблицы {{table}} будет преобразовано в tbl_table
```

### 8. Конструктор запросов

[](#8-конструктор-запросов)

Конструктор запросов предоставляет объектно-ориентированный способ написания SQL-запросов (аналогично Yii).
В данной библиотеки не поддерживаются запросы на изменение структуры БД

#### 8.1 Получение данных

[](#81-получение-данных)

```
//Примеры
$rows = $db->createCommand()
    ->select('id, col1, col2 as cl2')
    ->from('{{table1}} t1')
    ->leftJoin('{{table2}} t2', 't1.id=t2.t1_id')
    ->where('id=:id', array(':id'=>id))
    ->order('id ASC')
    ->limit(5)
    ->offset(10)
    ->queryAll();

//union
$rows = $db->createCommand()
    ->select()
    ->from('{{one}}')
    ->union()
    ->select()
    ->from('{{two}}')
    ->queryAll();

//group, having
$rows = $db->createCommand()
	->select('*,COUNT(*) as cnt')
	->from('{{one}}')
	->group('col1')
	->having('cnt=2')
	->queryAll();
```

#### 8.2 Удаление данных

[](#82-удаление-данных)

```
//Без привязки значений
$db->createCommand()->delete('table_name', 'id=10');
//С привязкой
$db->createCommand()->delete('table_name', 'id=:id', array(':id'=>10));
```

#### 8.3 Обновление данных

[](#83-обновление-данных)

```
//Без условий
$db->createCommand()->update(
    'table_name',
    array('column1'=>'value1', 'column2'=>'valu2')
);
//С условиями
$db->createCommand()->update(
    'table_name',
    array('column1'=>'value1', 'column2'=>'valu2'),
    'id=:id',
    array(':id' => 1)
);
```

#### 8.4 Добавление данных

[](#84-добавление-данных)

```
$db->createCommand()->insert('table_name', array('column1'=>'value1', 'column2'=>'value2'));
```

### 9. Получение SQL

[](#9-получение-sql)

```
$db->createCommand()
    ->select('foo')
    ->from('tbl_bar')
    ->text;
//или
$db->createCommand()
    ->select('foo')
    ->from('tbl_bar')
    ->sql;
```

###  Health Score

26

—

LowBetter than 43% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity9

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity59

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~125 days

Total

2

Last Release

3426d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/cee7ef95c5d58b951e9b458b589eef2cbf631ba072ad497064766a13a447f9b9?d=identicon)[ova777](/maintainers/ova777)

---

Top Contributors

[![ovaunit](https://avatars.githubusercontent.com/u/8519980?v=4)](https://github.com/ovaunit "ovaunit (5 commits)")

---

Tags

mysqlpdodb

### Embed Badge

![Health badge](/badges/ova777-dao/health.svg)

```
[![Health](https://phpackages.com/badges/ova777-dao/health.svg)](https://phpackages.com/packages/ova777-dao)
```

###  Alternatives

[aura/sqlquery

Object-oriented query builders for MySQL, Postgres, SQLite, and SQLServer; can be used with any database connection library.

4572.9M34](/packages/aura-sqlquery)[envms/fluentpdo

FluentPDO is a quick and light PHP library for rapid query building. It features a smart join builder, which automatically creates table joins.

925511.7k13](/packages/envms-fluentpdo)[lichtner/fluentpdo

FluentPDO is a quick and light PHP library for rapid query building. It features a smart join builder, which automatically creates table joins.

921274.8k6](/packages/lichtner-fluentpdo)[fpdo/fluentpdo

FluentPDO is a quick and light PHP library for rapid query building. It features a smart join builder, which automatically creates table joins.

921244.9k7](/packages/fpdo-fluentpdo)[atlas/query

Object-oriented query builders and performers for MySQL, Postgres, SQLite, and SQLServer.

41249.0k6](/packages/atlas-query)[simplon/mysql

Simplon MySQL Library

6988.1k7](/packages/simplon-mysql)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
