Класс PostgreSQL
Представляет из себя дочерний класс PDO.
Получить уже готовый экземпляр класса с выполненным подключением к БД можно с помощью метода App::sql()
. Кроме этого, можно воспользоваться методом App::sqlCallback()
результат которого можно передать в виде callback функции. Это может быть полезно, если есть вероятность, что соединение с базой данных не понадобится. Соединение с БД будет инициализировано только в случае вызова callback функции.
PostgreSQL::insert
public PostgreSQL::insert(
string $table,
array $values,
string $index = 'id'
): mixed
Позволяет применить SQL запрос INSERT INTO ...
для произвольного числа полей, значения которых находятся в ассоциативном массиве.
Возвращает значение индексного поля для вставленной строки.
Список параметров:
table
- имя таблицы для вставки. ВНИМАНИЕ! Опасность SQL-инъекции. Имя таблицы не должно формироваться на основе данных пользователя, либо необходимо фильтровать полученные от пользователя данные.values
- ассоциативный массив, содержащий в ключах наименование полей таблицы, а в значениях - значения полей для вставки.index
- поле, содержащее уникальный индекс.
PostgreSQL::update
public PostgreSQL::update(
string $table,
array $values,
string $index = 'id',
string $old_index = null
): bool
Позволяет выполнить SQL запрос UPDATE ... SET ...
для произвольного числа полей, значения которых находятся в ассоциативном массиве.
Возвращает true
в случае успешного выполнения и false
в случае возникновения ошибки.
Список параметров:
table
- имя таблицы для обновления. ВНИМАНИЕ! Опасность SQL-инъекции. Имя таблицы не должно формироваться на основе данных пользователя, либо необходимо фильтровать полученные от пользователя данные.values
- ассоциативный массив, содержащий в ключах наименование полей таблицы, а в значениях - значения полей для вставки.index
- поле, содержащее уникальный индекс. Значение этого поля будет использовано в выраженииWHERE
для поиска нужной строки.old_index
- поле, содержащее старое значение первичного ключа для случаев, если приUPDATE
значение этого ключа изменяется. Используется в выраженииWHERE
вместо значенияindex
, если указано.
PostgreSQL::fetchEntity
PostgreSQL::fetchEntity(
$class_name,
$where
): object|false
Позволяет получить объект заданного класса class_name
из строки базы данных. Используемый класс должен поддерживать интерфейс SQL\EntityInterface
. В качестве where
может быть использована строка или ассоциативный массив. При использовании строки, поиск строки будет производиться по первичному индексу. При использовании ассоциативного массива - по произвольным полям.
Возвращает новый объект указанного класса из соответствующей таблицы БД или false в случае возникновения ошибки.
PostgreSQL::insertEntity
PostgreSQL::insertEntity($object): mixed
Позволяет добавить объект с интерфейсом SQL\EntityInterface
в базу данных.
Возвращает значение ключевого поля вставленного объекта.
PostgreSQL::updateEntity
PostgreSQL::updateEntity(
object $object,
string $id = null
): bool
Позволяет обновить данные об объекте с интерфейсом SQL\EntityInterface
в базе данных. Значение id
не является обязательным. Если у объекта меняется значение первичного индекса, то необходимо старое значение добавить в виде дополнительного свойства и указать имя этого свойства в id
.
Возвращает true
в случае успешного выполнения и false
в случае возникновения ошибки.
PostgreSQL::fetchKeyPair
PostgreSQL::fetchKeyPair(string $class_name): array
Позволяет получить из таблицы БД с именем, которая указана в классе с интерфейсом SQL\EntityInterface
все строки в виде массива пар «индекс»=>«наименование». Кроме этого класс должен реализовывать интерфейс SQL\KeyPairInterface
.
Возвращает ассоциативный массив из всех записей таблицы БД.
PostgreSQL::queryEntity
PostgreSQL::queryEntity(
string $class_name,
string $order
)
Позволяет получить объекты класса class_name
из БД.
Возвращает объект типа PDOStatement
.
Список параметров:
class_name
- имя класса с интерфейсомSQL\EntityInterface
;order
- поле, задающее порядок следования записей.