class Db_Object (Объекты ORM)

Объекты ORM – основополагающий класс для работы с данными ORM.

После того, как описана структура объекта в ORM, данными объектов можно манипулировать при помощи класса Db_Object:

class Db_Object {

/**
* Конструктор объекта принимает имя объекта и его идентификатор,
* (является необязательным параметром), при его отсутствии
* будет создан новый объект. Если ORM не содержит объекта с указанным
* идентификатором, будет брошен Exception
* Крайне нежелательно прямое использование этого метода,
* предпочтительнее использовать фабричный метод Db_Object::factory()
* @param string $name
* @param integer $id - optional
* @throws Exception
*/
public function __construct($name, $id = false)

/**
* Получить список полей объекта с описаниями их типов
* @return array
*/

public function getFields()

/**
* Получить данные объекта, будет возвращен ассоциативный массив «имя поля»
* «имя свойства» => «значение свойства»
* @return array
*/

public function getData()

/**
* Получить имя объекта
* @return string
*/

public function getName()

/**
* Получить идентификатор объекта
* @return integer
*/

public function getId()

/**
* Получить полное имя таблицы базы данных, хранящей данные объекта (с префиксом)
* @return string
*/

public function getTable()

/**
* Проверить имеет ли объект измененные свойства, которые не были
* сохранены в базу данных
* @return boolean
*/

public function hasUpdates()

/**
* Получить объект конфигурации ORM (хелпер структуры данных)
* @return Db_Object_Config
*/

public function getConfig()

/**
* Получить обновленные, но не сохраненные данные объекта
* @return array
*/

public function getUpdates()

/**
* Установить идентификатор объекта
* @param integer $id
*/

public function setId($id)

/**
* Зафиксировать изменения данных объекта (не вызывает сохранения)
* @return void
*/

public function commitChanges()

/**
* Проверить на существование поле объекта
* @param string $name
* @return boolean
*/

public function fieldExists($name)

/**
* Получить имя связанного объекта для поля
* (доступно, если поле объекта является ссылкой на другой объект)
* @param string $field - field name
* @return string
*/

public function getLinkedObject($field)

/**
* Проверить, существуют ли все объекты из списка
* @param string $name
* @param mixed integer/array $ids
* @return boolean
*/

static public function objectExists($name , $ids)

/**
* Установить свойства объекта, используя ассоциативный массив имен полей и значений
* @param array $values
* @throws Exception
* @return void
*/

public function setValues(array $values)

/**
* Установить значение поля объекта
* @param string $name
* @param mixed $value
* @throws Exception
*/

public function set($name , $value)

/**
* Получить значение поля объекта
* В случае если до этого поле было обновлено, вернет новое значение
* @param string $name - field name
* @throws Exception
* @return mixed
*/

public function get($name)

/**
* Получить исходное значение поля объекта (то что было получено из базы данных)
* не зависимо от того было ли обновлено значение поля
* @param string $name - field name
* @return mixed
*/

public function getOld($name)

/**
* Сохранить изменения
* @param boolean $log  - логировать изменения
* @param boolean $useTransdaction — опционально,
* использовать ли при возможности транзакцию при изменении данных, если в вашем коде
* происходит обновление данных в рамках внешней транзакции, установите свойство в  false,
* иначе первое же обновление приведет к фиксации изменений
* @return boolean;
*/

public function save($log = true , $useTransdaction = true)

/**
* Удаление объекта
* @param boolean $useTransdaction — опционально,
* использовать ли при возможности транзакцию при изменении данных, если в вашем коде
* происходит обновление данных в рамках внешней транзакции, установите свойство в false,
* иначе первое же обновление приведет к фиксации изменений
* @return boolean - success
*/

public function delete($useTransdaction = true)

/**
* Провести валидацию уникальных полей, групп полей объекта
* Возвращает массив ошибок или false, используется для взаимодействия с ExtJS формами
* @property boolean $new
* @return mixed false / array
*/

public function validateUniqueValues()

/** Фабричный метод создания объекта, предпочтителен для использования, см. описание метода __construct()
* @param string $name — имя объекта
* @param integer $id — идентификатор объекта
* @throws Exception
* @return Db_Object
*/

static public function factory($name , $id = false)

}

Пример:

$news = new Db_Object('news');

$news->title = 'Новость 1';

$news->text = 'Содержание новости';

$news->news_date = date('Y-m-d');

$news->save();

Как видно из примера, свойства (поля) объекта назначаются обычным методом.
В случае если мы пытаемся указать несуществующее свойство или задать значение,
неудовлетворяющее указанному в конфигурации типу, будет брошен Exception.
Сохранение данных производится путем вызова метода save.

comments powered by Disqus