Phpxcore:php4:framework:classes:dbentity class
Материал из phpXCoreWiki.
[править] DBEntity.class.php
[править] Основы
Данный класс предназначен для упрощения работы с БД. Для своей работы требует компонент XDatabase.
- create() - создание сущности
- update() - обновление сущности
- delete() - удаление сущности
- validate() - валидация сущности, метод вызывается при create, set, update
- get() - получения сущности по уникальному ID
- getByFields(array $fields = null) - получение сущности по нескольким полям (если данному условию соответствует более 1-ой записи в БД вернётся false)
- getByWhere(string $aWhere) - получение сущности по условию
- getArray() - возвращает ассоциативный массив
Имена всех приватных полей (для тех кот. не надо синхронизировать с БД) должны начинаться со знака подчёркивания (см. пример).
Пример работы: Создаём класс наследуемый от DBEntity (каждая переменная является соответствующим полем в таблице):
/* id - int(11) message - text user_id - int(11) date_create - datetime date_update - datetime */ class Discussion extends DBEntity { var $id; var $message; var $user_id; var $date_create; var $date_update; var $__private_var1; var $__private_var2; /* инициализация таким образом или используя конструктор используя такой метод не следует обьявлять конструктор */ var $__table = "message"; var $__uid = "id"; / * Constructor * * @access public */ function Discussion($aID = null) { альтернативный способ инициализации $this->init("message", "id"); $this->get($aID); } / * validate */ function validate() { $flag = true; if (empty($this->user_id) { $this->_setError('user_id', 'Please set user ID'); } if (empty($this->message) { $this->_setError('message', 'Please fill message'); } return $flag; } }
[править] Пример использования:
Создание сущности:
$DM = new Discussion(); $DM->dis_id = $dis_id; $DM->user_id = $user_id; $DM->message = htmlentities($message); $DM->date_create = date("Y-m-d H:i:s"); $DM->__private_var1 = "Any value, this var is will not insert to DB"; $DM->create(); </code> Редактирование сущности: <source lang='php'> вариант 1 $DM = new Discussion(); if ($DM->get($id)) { $DM->message = htmlentities($message); $DM->date_update = gmdate("Y-m-d H:i:s"); if (!$DM->update()) { $error = "Internal Error"; } } else { $error = "Entity is not exist"; } вариант 2 if ($DM->get($data['id'])) { if ($DM->set($data)) { if ($DM->create()) { Output::setMessage('Record was updated'); } else { Output::setError('Internal error. Please try again'); } } else { $this->output->document->addError($DM->getValidateErrors()); } } else { $error = "Entity is not exist"; }
Удаление:
$DM = new Discussion(); if ($DM->get($id)) { if (!$DM->delete()) { $error = "Internal Error"; } } else { $error = "Entity is not exist"; }
